0

我正在尝试更深入地了解 Ruby on Rails 框架,并且我一直在谷歌上搜索我听说过但从未理解过的术语。

其中两个术语是“ActionPack”和“Rack”

根据其中每一个的文档:

行动包:

Action Pack 是一个用于处理和响应 Web 请求的框架。它提供了路由机制(将请求 URL 映射到动作),定义实现动作的控制器,并通过渲染视图生成响应,视图是各种格式的模板。简而言之,Action Pack 提供了 MVC 范例中的视图和控制器层。

架子:

Rack 在支持 Ruby 和 Ruby 框架的网络服务器之间提供了一个最小接口。

从我一直在做的谷歌搜索中,我将以下模型放在了我的脑海中,但我仍然有点不确定:

如果我理解正确,Rack 更像是一个规范/标准,用于说明应用程序/程序应该接受什么作为输入/产生什么作为输出(执行此操作的程序被认为是“机架兼容”)。ActionPack 是 rails 用来执行此操作的程序。所以请求会去:Client HTTP request --> Server --> ActionPack --> The Rest of Rails etc.

它是否正确?还是我误会了?

4

1 回答 1

0

许多其他框架可以是基于 Rack 的应用程序,例如SinatraGrape

要使用 Rack,请提供一个“应用程序”:一个响应call方法的对象,将环境哈希作为参数,并返回一个包含三个元素的数组:

HTTP 响应代码

标头哈希

响应体,它必须响应每个

这意味着:使用 rack,您可以直接与 Web 请求进行交互,从而允许社区构建基于该简单交互规则的不同工具或框架。有问题的app对象是框架。

ActionPack是 Rails 与 Rack 交互的部分,它由 和 的组合组成ActionControllerActionView这使得我们奇妙的 MVC 架构保持原样。检查此答案以获取有关 ActionPack 的详细视图

于 2017-02-11T17:25:54.193 回答