在初始化

时间:2016-01-04 18:15:07

标签: ruby-on-rails rack middleware

让我们说这是应用程序完全启动后我的RAILS中间件堆栈:

> Rails.application.middleware

#<ActionDispatch::MiddlewareStack:0x007f9d1636e970
 @middlewares=
  [FooMiddleware,
   ...
   ...
   ...
   SomeEngine::SomeMiddleware]>

在初始化过程完成并且中间件堆栈冻结之前,我需要将SomeEngine::SomeMiddlewareMyProxyMiddleware交换。

如果从应用程序和它包含的引擎完成所有其他初始化之后,如何延迟插入或交换中间件?

我找不到可以解冻中间件堆栈解冻但所有SomeEngine已初始化的地方。

如果重要,请参阅RAILS 4.2。

谢谢!

1 个答案:

答案 0 :(得分:1)

想出来:

# config/application.rb

module MyApplication
  class Application < Rails::Application
    # ...

    initializer :foo do |app|
      app.middleware.swap SomeEngine::SomeMiddleware, BarMiddleware
    end
  end
end

希望这有助于其他人。欢呼声。

相关问题