加载中...

Rack 是 Ruby 生态中 Web 服务器与 Web 框架之间的接口规范及配套库,由 Christian Neukirchen 于 2007 年发布,设计上受 Python WSGI 启发但更为精简。
一个 Rack 应用就是任何响应 call 方法的对象:接收表示请求环境的 env 哈希,返回 [状态码, 响应头, 响应体] 三元素数组。这个极简契约使 Puma、Unicorn、Passenger 等服务器可以运行 Rails、Sinatra、Hanami 等任意框架的应用。
Rack 中间件是包裹另一个应用的应用,通过 config.ru 文件以 use 声明堆叠,日志、会话、静态文件、异常处理等功能都以中间件形式复用。Rails 自身的请求处理管线就是一长串 Rack 中间件。
Rack 证明了「以最小接口解耦服务器与框架」的价值,其模式被 Clojure 的 Ring、Perl 的 PSGI/Plack 等直接效仿,是 Web 框架史上影响深远的抽象之一。

登录 后参与讨论
暂无讨论,来发表第一条评论吧