- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想了解 Rack 的工作原理。
在 lib/rack/server.rb 中有这一行 (344)...
https://github.com/rack/rack/blob/master/lib/rack/server.rb
middleware = middleware.call(self) if middleware.respond_to?(:call)
... 看起来该行的一部分相当于:
Rack::ContentLength.call(Rack::Server)
...如果我们使用 Rack::ContentLength 作为示例默认中间件(它看起来应该是一个)。
https://github.com/rack/rack/blob/master/lib/rack/content_length.rb(第 14 行)
我是否正确阅读了这篇文章,还是错过了什么?看起来 Rack::ContentLength a) 想先初始化,b) 想为 call
使用不同的参数,这就是我感到困惑的原因。
最佳答案
我的示例中的 Rack::ContentLength 类在到达 server.rb 的第 344 行时看起来会在一个数组中。该数组通过向 respond_to?(:call)
返回 false 来控制流。另一方面,logging_middleware 不在数组中,它定义了一个 lambda 对象,它将 respond_to?(:call)
。
def default_middleware_by_environment
m = Hash.new {|h,k| h[k] = []}
m["deployment"] = [
[Rack::ContentLength],
[Rack::Chunked],
logging_middleware,
[Rack::TempfileReaper]
]
m["development"] = [
[Rack::ContentLength],
[Rack::Chunked],
logging_middleware,
[Rack::ShowExceptions],
[Rack::Lint]
我将不得不进一步深入了解它们自己数组中的这些类在何处/如何处理,但看起来它不在 Rack::Server.build_app 中。
关于ruby - Rack::Server.build_app 如何添加中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39580105/
我想了解 Rack 的工作原理。 在 lib/rack/server.rb 中有这一行 (344)... https://github.com/rack/rack/blob/master/lib/ra
我开始使用 fastLane 并匹配 codesigning在 Jenkins 。 match 能够成功创建证书和配置文件。然而,build_app 步骤失败了,因为 pbxproj 文件将 CODE
我是一名优秀的程序员,十分优秀!