Rack - Ruby Web server 接口
用 Ruby 或"Ruby 实现的 Web 框架"创建的应用,想要提供 Web 服务,它们都要和 Web 服务器打交道。而这个过程是非常复杂的,为了简化这个过程,我们可以使用 Rack.
app应用 --> (Rack) --> 应用服务器 --> Web服务器 --> 外部世界
Rack 提供了一个"与 Web服务器打交道"最精简的接口,通过这个接口,我们的应用很轻松的就能提供 Web 服务(接收 Web 请求,响应处理结果)。上面的"应用服务器"是对 Rack 的进一步封装。
使用这个接口的条件是:传递一个"程序"(你没看错,就是把一个程序当做参数,下文以 app 代替)。并且这个 app 需要同时满足以下条件:
app.respond_to? :call
# => trueapp 创建过程需要以运行环境做为参数(类型为 Hash,下文以
env
代替运行环境)app 需要返回一个数组,数组包含 3 个元素,依次是:
HTTP headers (类型为 Hash)
HTTP body data (类型能接受
each
方法即可)
最小的 Rack
使用举例
你也可以使用 rackup
命令,节省点时间和力气:
运行:
rackup config.ru
... 完。
再举个例子:
可以封装 Rack,得到我们自己的 YourRack,或:
再使用举例
'rack/contrib' 可以自动加载 Rack 包含的所有组件,以下例子可用 rackup config.ru
运行:
链接
Rack: a Ruby Webserver Interface a modular Ruby webserver interface Contributed Rack Middleware and Utilities
最后更新于