ActionPack和Rack有什么区别? (导轨)

时间:2017-02-10 22:39:14

标签: ruby-on-rails rack actionpack

我试图更深入地了解Ruby on Rails框架,并且我一直在搜索关于我听到过但却从未理解的条款的大量搜索。

其中两个术语是" ActionPack"和" Rack"

根据每个人的文档:

ActionPack的:

  

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

机架:

  

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

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

如果我理解正确,Rack更多的是规范/标准,应用程序/程序应该接受输入/产生作为输出(执行此操作的程序"机架兼容")。 ActionPack是rails用来执行此操作的程序。因此请求将:Client HTTP request --> Server --> ActionPack --> The Rest of Rails etc.

这是对的吗?还是我误解了?

1 个答案:

答案 0 :(得分:0)

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

  

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

     

HTTP响应代码

     

标题的哈希

     

响应主体,必须响应每个

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

ActionPack是Rails'与Rack交互的部分,它由ActionControllerActionView的组合组成,这使我们出色的MVC架构成为现实。查看this answer for a detailed view on ActionPack