Sinatra与Rails

我已经完成了一些Sinatra和Rails示例,但是我很难弄清哪些function属于哪种技术。

我使用Sinatra / Rails获得了什么特别的function? 它只是ActionPack / ActionView? 纠正我,如果我错了,但我可以只使用Webrick / Mongrel和服务我的.erb文件的权利? 我可以在这些文件中使用ActiveRecord技术,并且仍然可以访问postvariables,会话状态和查询stringvariables吗?

所以,我问你们,如果我从上面的PHP的情况开始, Webrick + ERB + ActiveRecord,使用Sinatra可以获得什么? 而且我还能通过使用Rails获得什么?

对于Sinatra来说,它几乎就像是一个Rack的包装。 所以你首先需要问一下Rack的重点。 Rack基本上是一个框架如何返回结果的规范,它可以使用Rack支持的任何Web服务器返回的内容。 所以它是一个真正的兼容层,允许你随意select你的框架/服务器组合,而不用担心它们是否能够一起工作。 如果您的框架符合机架,您应该可以通过机架部署在几乎任何服务器上。

现在,Rack是非常低的水平。 像Sinatra这样的框架可以为你提供很好的路由,帮手,filter之前/之后等等。 你只需要看文档,看看你能得到什么。 Railsfunction更强大,在很多方面“神奇”。 也就是说,你可能会在Rails中写一行代码,最终会做很多事情,对某些人来说是好事,对某些人来说太神奇了。 因为这个原因,我个人比较喜欢Sinatra,至less在对Rails内部有一个体面的理解之前。

Rails的增益是ActionView / ActionPack。 但是你可以用Mongrel / Erb来代替。 这是不同的。

在你的视图中,你所有的名字都像名称路由或错误pipe理一样。 这是所有资源pipe理和所有插件像InheritedResources。 Rails的优点

有像Padrino环境这样的工具可以帮助你拥有所有的帮手。 但是,所有的插件激活后,它真的比较激烈? 我不这么认为。

随着Rails 3,Rails是一个完整的Rack应用程序与很多RackMiddleware。 你可以放弃一些中间件来增加你的回应。

这里接受的答案是基于一个神话,我怀疑那个曾经试图用Rails之外的东西来构build大规模应用程序的人。

Sinatra并不比Rails“低级”,它们都在扩展Rack,只是Rails添加了一堆发生器,gem和一系列强制性的约定,使得它更加灵活,而且更加难以扩展和调整你喜欢的方式。

有了Rails,你可以获得很多你不需要的东西,它非常臃肿。 西纳特拉是光秃秃的骨头,只添加你想要的东西。 这使Sinatra变得快速,而且很容易知道发生了什么。

Sinatra和带有gem的Rack有你需要的一切,我真的不明白为什么有人会使用Rails。 使用Sinatra或纯粹的机架给你更多的速度,更less的膨胀和完全的控制。 现在是真正的魔法。