你用Sinatra做什么用的?

时间:2010-01-16 00:30:49

标签: ruby sinatra

我对Sinatra(红宝石框架)感到困惑。

它是一个轻量级的Rails替代品还是你可以让它们并排运行?

你可以做一个Web应用程序(如在Rails中)吗?例如推特克隆?

4 个答案:

答案 0 :(得分:64)

Sinatra不是Rails。它是一个用于简单网站的微框架,您可能只需要定义一些操作。您可以将Sinatra应用程序设置为您想要的复杂程序,但是您可能会比使用Rails更快地将代码变成一个疯狂的混乱

虽然不是100%准确,但Sinatra大多适合Page Controller架构模式,而Rails是一个明确的MVC实现。

具体回答您的问题:

  • 旨在取代Rails
  • 可以并排运行
  • 可以在Sinatra中创建一个推特克隆

答案 1 :(得分:17)

我们目前正在将Sinatra用于生产项目(尚未部署,仍在开发中)。

基本上它围绕着遗留应用程序使用的数据库,并在内部向其他应用程序公开REST Web服务,这样他们就可以与遗留应用程序进行交互,而无需直接访问数据库。

考虑了Rails,但没有使用,因为:

  • 没有视图层(本质上视图只是JSON / XML REST响应)
  • 模型是使用Sequel实现的(ActiveRecord很糟糕,处理古怪的数据库与古怪的非标准结构,但续集相当不错)
  • 控制器和路由层非常简单(虽然在Ruby支持的情况下实现了一些复杂的业务逻辑)

鉴于这些要求Rails是可用的,但是过度杀伤,而Sinatra很好地击中了这个位置。

答案 2 :(得分:5)

我的答案有一点点(因为我之前没有真正部署过sinatra应用程序),但是sinatra的“甜蜜点”是微应用程序:一个小的应用程序,其中一个完整的MVC框架将是矫枉过正。使用Sinatra,您可以使用单个代码文件构建整个Web应用程序。

“微型应用”的一个例子是rubular(但请注意,我不知道它写的是什么框架)。 Rubular做了一件事,有一点非常好。使用rails会有点矫枉过正。

答案 3 :(得分:1)

我们使用Sinatra作为http://tweetarium.com,就像madlep的用例一样,网站的大部分都只是AJAX调用,因此视图非常简单。

我们不使用ORM,只是从twitter API序列化JSON并在TokyoCabinet中缓存它

我个人认为Sinatra非常适合API。每个版本可能是安装在不同端点的不同Sinatra应用程序,您可以在Rails应用程序中运行它。