私はRackの仕組みを理解しようとしています。 のlib /ラック/ server.rbでRack :: Server.build_appはどのようにミドルウェアを追加しますか?
このライン(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をデフォルトのミドルウェアの例(それは1つのように見えます)。
https://github.com/rack/rack/blob/master/lib/rack/content_length.rb (ライン14)
は、私がこれを正しく読んでいる、または私が何かを見逃していますか? Rack :: ContentLength a)が最初に初期化されたいと思っていて、b)call
のために別の引数を必要としているように見えます。それが私が混乱している理由です。