Sinatra与Rails


67

我已经完成了Sinatra和Rails的一些示例,但是我很难确定哪些功能属于哪种技术。

通过使用Sinatra / Rails,我可以得到什么?仅仅是ActionPack / ActionView吗?如果我错了,请纠正我,但是我可以只使用Webrick / Mongrel并提供我的.erb文件,对吗?而且我可以在这些文件中使用ActiveRecord技术,并且仍然访问发布变量,会话状态和querystring变量,对吗?

所以,我要问的是,如果我从上述类似PHP的场景开始;Webrick + ERB + ActiveRecord,使用Sinatra有什么好处?通过使用Rails,我还能获得什么呢?

Answers:


62

对于Sinatra,这几乎就像是Rack的包装纸。因此,您首先需要询问Rack的要点是什么。Rack基本上是框架应如何返回结果的规范,它可以使用Rack支持的任何Web服务器返回的内容。因此,它实际上是一个兼容性层,允许您随意选择框架/服务器组合,而不必担心它们是否可以一起使用。如果您的框架是Rack兼容的,那么您应该几乎可以通过Rack部署在任何服务器上。

现在,事情是机架很低的水平。Sinatra之类的框架为您提供了不错的路由,帮助程序,过滤器之前/之后等功能。您只需要查看文档即可了解所获得的内容。Rails具有更多功能,并且在许多方面都是“神奇的”。也就是说,您可能会在Rails中写一行,最终会做很多事情,这对某些人来说是一件好事,而对于某些魔术来说也是如此。由于这个原因,我个人更喜欢Sinatra,至少在对Rails内部有一个体面的了解之前。


1
谢谢(你的)信息。这是一个后续问题:如果我没有Rails或Sinatra,该如何使用Webrick来提供一些ERB文件呢?我认为可以仅使用ruby命令在特定端口上启动Webrick并将其指向特定目录吗?
LoveMeSomeCode

3
我只是用Google搜索“的WEBrick”,第3的结果:microjet.ath.cx/webrickguide/html -也是这样:segment7.net/projects/ruby/WEBrick/servlets.html
ehsanul

1
我不明白为什么您要打扰所有事情,尽管老实说,似乎毫无意义,而且Webrick并不是最好的服务器。如果您真正想要的只是您,则可以使用Sinatra的URL路由作为ERB的接口。您可以忽略所有其他功能,也可以在以后使用它们。您看到Sinatra的世界了吗?超级简单(如果您希望它引用ERB文件而不是字符串,代码行也不会改变):http
ehsanul 2010年

谢谢(你的)信息。我想我要和Sinatra一起去这个项目。并感谢您的链接!
LoveMeSomeCode

5

Rails的收益是ActionView / ActionPack。但是您可以只用Mongrel / Erb代替。不一样

在您看来,这就是一切,例如name_route或表单中的错误管理。它是所有资源管理和所有插件,例如InheritedResources。Rails的优势。

有一些类似Padrino环境的工具可以帮助您拥有所有这些帮助器。但是,在激活所有插件之后,它真的更快吗?我不这么认为。

对于Rails 3,Rails是具有许多RackMiddleware的完整Rack应用程序。您可以放下一些中间件来增加响应。


1

直到今天,这个问题仍然有意义。随着Rails功能的不断增加,我想添加一个新答案。

现在有这么多宝石,所以您可以在Rails中实现,最有可能在Sinatra中实现。如果要在Rails和Sinatra(或任何其他框架)之间进行比较,我们只需要比较性能和易用性即可。

其中一个Rails的学说是约定优于配置。在Rails中创建项目时,您会自动获得许多宝石Gemfile。不仅宝石,当您查看config目录时,还将看到许多内容。这种学说是魔术可以首先发生的原因。违反约定后,您必须修改-甚至创建-配置。

当我们想拥有更大的灵活性但又不想改变方向时,可以使用Sinatra之类的框架,当我们第一次创建项目时,只启用了很少的功能。即便如此,我还是从Sinatra创建了迷你导轨:我只是采用Rails的方式,并使用了我真正需要的库/宝石。因为我需要开发自己的配置,所以开发时间比使用rails长。

如果您看到此Web框架基准测试,您会发现Rails是如此之慢,而其他的ruby框架(例如Sinatra)可以比Rails高得多。

那么,什么时候最好使用Rails?

  • 您需要快速的开发时间。遵守约定;
  • 您的应用程序的未来功能仍然未知。

什么时候最好使用Sinatra?

  • 您不需要快速的开发时间;
  • 如果您只从事小型项目,Sinatra可能会很快。
  • 您知道将来不会添加很多功能。

您从Rails中获得什么?发展速度。

您从Sinatra获得了什么?灵活性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.