【问题标题】:Swap RAILS middleware before initialized在初始化之前交换 RAILS 中间件
【发布时间】:2016-01-04 18:15:06
【问题描述】:

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

> Rails.application.middleware

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

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

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

我找不到挂钩到中间件堆栈未冻结但所有 SomeEngine 已初始化的位置。

如果重要的话,这在 RAILS 4.2 上。

谢谢!

【问题讨论】:

    标签: ruby-on-rails rack middleware


    【解决方案1】:

    想通了:

    # config/application.rb
    
    module MyApplication
      class Application < Rails::Application
        # ...
    
        initializer :foo do |app|
          app.middleware.swap SomeEngine::SomeMiddleware, BarMiddleware
        end
      end
    end
    

    希望这对其他人有所帮助。干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多