Rails 3对比Sinatra

时间:2010-08-29 12:18:23

标签: ruby-on-rails json sinatra

对于我的下一个Web应用程序,我正在讨论是否使用Rails 3.x或Sinatra。

我想使用服务器提供用户身份验证,应用程序触发的电子邮件,相当复杂的数据模型(在ActiveRecord后面),以及与Web客户端的JSON数据接口。客户端将使用静态HTML,静态CSS,Javascript / jQuery将JSON数据呈现到视图中。用于呈现视图的“策略”将由Javascript代码和一些JSON数据驱动。我不打算使用任何动态视图技术,如ERB,HAML或RJS。

我会更好地使用Sinatra或Rails 3.x吗?

在做出决定之前,我还应该问其他任何问题吗?

5 个答案:

答案 0 :(得分:26)

您的数据模型相当复杂,因此我认为您的应用程序必须处理大量业务规则和交互可能性。

Sinatra旨在处理轻量级软件架构。如果您选择Sinatra,您可能会遇到自己需要处理的设计和组织问题。 Rails实现了MVC模式,可以通过提供许多有用的机制来帮助您组织代码。

您仍然可以使用Sinatra构建一个“全栈”Web应用程序,但是您必须自己做很多事情,特别是如果您提供的功能量很高(或将会增长)。我认为Rails在大型架构中自然更适合。

PS:在Sinatra和Rails中都可以使用ActiveRecord。

答案 1 :(得分:6)

Sinatra将是一个非常好的选择,我觉得它会比rails主要出于一个原因。 这与其他用户编写的内容相关联“您遵循惯例和模式,确保您的应用程序易于维护并且可以很好地扩展。

几年前,我们在rails中开发了一个相当大的应用程序。我们所有的开发人员都必须进行完全重写,因为rails core(读取37个信号)并不关心使他们的新版本向后兼容。每次更新时代码都会中断。

因此,在Rails中对其进行编码将无法确保可维护性或可伸缩性。恰恰相反。

事实上,Sinatra的可扩展性会更好,因为它更轻巧,无论如何都要使用乘客进行部署。 Sinatra社区没有炒作,非常有帮助。对于相同程度的Rails,没有主要的自我,大自我。这个确实很重要,因为Rails议程可能与你的不同,你最终可能会很快重写代码。 O'Reilly有一本关于Sinatra的新书我觉得值得一看,因为它里面充满了关于可以做什么和如何做的例子和想法。

答案 2 :(得分:1)

我有同样的任务来完成现有的rails应用程序,现在需要一个外部设备(iPhone和Android应用程序)的json界面。 强烈建议使用sinatra-activerecord,这样你就可以在sinatra app中包含所有模型。这样您就不必重写业务逻辑。

将您现有的模型加载到sinatra应用程序中,如下所示: set:database,URI.encode(“#{db_settings ['adapter']}://#{db_settings ['username']} @#{db_settings ['host']} /#{db_settings ['database']} “) 要求'./data/models/user.rb'

db_settings正在从database.yml(与rails相同的格式)加载它的设置,使用yaml_db gem;)。这样你的sinatra应用程序就可以重用所有模型甚至rails应用程序中的配置文件。

答案 3 :(得分:1)

为什么你会使用Rails做任何事情?你需要模板生成器吗?

使用Sinatra或纯粹的Rack编写应用程序就像在Rails中一样简单,并且您可以为所做的一切获得超高速度。

Sinatra应用程序可以按照您想要的任何方式进行组织,并且比Rails更灵活,无论应用程序有多大,它都是最佳选择。

使用Sinatra和Rack,将所有内容整合到微服务中并添加自定义中间件感觉更自然。

人们说它适用于较小的应用程序或架构只是还没有充分利用它,我不知道是谁开始了这个神话。

答案 4 :(得分:0)

您可能希望在决定之前查看other lightweight Ruby frameworks - 帖子有点旧,但可能值得扫描。