Ruby on rails rails如何覆盖rack定义的中间件方法?
这个问题是关于rails源代码的 我注意到railties/lib/rails/commands/server.rb(rails)中定义的中间件方法Ruby on rails rails如何覆盖rack定义的中间件方法?,ruby-on-rails,ruby,rack,Ruby On Rails,Ruby,Rack,这个问题是关于rails源代码的 我注意到railties/lib/rails/commands/server.rb(rails)中定义的中间件方法 我的问题是:中间件方法是如何工作的?该方法不只是返回一个空哈希,不管它的外观如何。如果缺少指定的键,则接受该参数并使其返回默认值。例如: h=Hash.new([1]) h[:missing_key] => [1] build\u app方法正在调用中间件[options[:environment]]。因此,如果指定的环境不存在,它至少会返
我的问题是:中间件方法是如何工作的?该方法不只是返回一个空哈希,不管它的外观如何。如果缺少指定的键,则接受该参数并使其返回默认值。例如:
h=Hash.new([1])
h[:missing_key]
=> [1]
build\u app
方法正在调用中间件[options[:environment]]
。因此,如果指定的环境不存在,它至少会返回一组最小的中间件
def build_app(app)
middleware[options[:environment]].reverse_each do |middleware|
middleware = middleware.call(self) if middleware.respond_to?(:call)
next unless middleware
klass, *args = middleware
app = klass.new(app, *args)
end
app
end
h=Hash.new([1])
h[:missing_key]
=> [1]