Rack和Rails Metal(Ruby)有什么区别?

时间:2009-04-17 21:50:53

标签: ruby rack

我不明白!

Rack:http://rack.rubyforge.org/

Rails Metal:http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal

我读了两篇文章,我的眼睛模糊了。这两个组件有何关联?例子会很棒吗?

4 个答案:

答案 0 :(得分:13)

Rack是Ruby Web服务器可以实现的非常轻量级的规范。它是中间件,意味着它位于Web服务器(例如Passenger)和Rails之间。

Rails Metal是一种在需要最高性能时使用Rails处理HTTP请求的方法。它实际上将您带到金属并绕过标准Rails的请求/响应周期为您提供的所有正常功能(以及开销)。从技术上讲,Rails Metal是Rack处理程序的一种实现。

您可能会发现这两个关于该主题的Railscast信息:

您可以使用rake middleware

获取Rails应用程序的Rack中间件堆栈列表

答案 1 :(得分:4)

Rack是一个通用的Ruby API /抽象层,它允许不同的应用程序框架集成到Web服务器。

Rails Metal是Rails实现的Rack处理程序。它不仅包含一个调用Rails的处理程序,还包含它自己的API,使您可以更轻松地创建自己的处理程序,从而使Web服务器和绕过核心Rails。

答案 2 :(得分:4)

Jesse Newland's site上有一个很好的讨论和一些例子:

  

所以,基本上, Rails Metal是一个   Rails新机架周围的薄包装   中间件支持。机架中间件   是非常强大的东西:   与框架无关的组件   处理请求独立或在   与其他中间件的音乐会。

答案 3 :(得分:0)

除了其他人所涵盖的差异之外,我还想指出,Rack应用程序既可以是中间件,也可以是最终端点,而ActionController::Metal始终是端点,永远不会是中间件。