我不明白!
Rack:http://rack.rubyforge.org/
Rails Metal:http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal
我读了两篇文章,我的眼睛模糊了。这两个组件有何关联?例子会很棒吗?
答案 0 :(得分:13)
Rack是Ruby Web服务器可以实现的非常轻量级的规范。它是中间件,意味着它位于Web服务器(例如Passenger)和Rails之间。
Rails Metal是一种在需要最高性能时使用Rails处理HTTP请求的方法。它实际上将您带到金属并绕过标准Rails的请求/响应周期为您提供的所有正常功能(以及开销)。从技术上讲,Rails Metal是Rack处理程序的一种实现。
您可能会发现这两个关于该主题的Railscast信息:
您可以使用rake middleware
答案 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
始终是端点,永远不会是中间件。