你用什么Sinatra?

我对Sinatra(ruby框架)感到困惑。

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

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

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

虽然不是100%准确,但Sinatra主要适用于页面控制器架构模式,而Rails是一个明确的MVC实现。

要具体回答你的问题:

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

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

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

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

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

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

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

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

我们在http://tweetarium.com上使用Sinatra很像madlep的用例,大部分网站只是AJAX调用,因此视图非常简单。

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

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