6

我不明白!

机架:http ://rack.rubyforge.org/

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

看了两篇文章,眼睛都模糊了。这两个组件如何关联?例子会很棒吗?

4

4 回答 4

13

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

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

你可能会发现这两个 Railscasts 主题信息丰富:

您可以使用以下方法获取 Rails 应用程序的 Rack 中间件堆栈列表rake middleware

于 2009-04-17T22:03:24.163 回答
4

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

Rails Metal 是 Rails 对 Rack 处理程序的实现。它不仅包括一个调用 Rails 的处理程序,而且还公开了自己的 API,使您可以更轻松地创建自己的处理程序来访问 Web 服务器并绕过核心 Rails。

于 2009-04-17T22:02:00.673 回答
4

在Jesse Newland 的网站上有一个很好的讨论和一些例子:

因此,从本质上讲,Rails Metal 是 Rails 新的 Rack 中间件支持的薄包装器。机架中间件是非常强大的东西:独立处理请求或与其他中间件协同处理请求的独立于框架的组件。

于 2009-04-17T22:19:16.200 回答
0

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

于 2018-08-09T17:48:59.553 回答