使用Rails 3在gem堆栈中添加中间件

Zar*_*doz 3 rack ruby-on-rails

我试图找出Rails 3 gemfile中的gem如何自动将中间件添加到Rack堆栈.我正在寻找那个宝石的钩子.例如......当我将设计gem添加到我的Rails 3 gemfile中时,然后以某种方式设计warden作为Rack堆栈上的中间件.这似乎是自动的.Rails 3应用程序中无需进一步配置.我想从boot.rb自动调用一个特殊的类/方法.有什么提示这个过程真的有用吗?

Evi*_*out 9

你应该使用Railtie.实际上,这是Rails :: Railtie文档中给出的示例.

class MyRailtie < Rails::Railtie
  initializer "my_railtie.configure_rails_initialization" do |app|
    app.middleware.use MyRailtie::Middleware
  end
end
Run Code Online (Sandbox Code Playgroud)


Dav*_*ffe 8

要在gem中插入中间件,您应该将其添加到gem的引擎中.

lib/gem_name/engine.rb

require 'rails'

module GemName
  class Engine < Rails::Engine

    config.app_middleware.insert_before(Warden::Manager, Rack::OpenID)

  end
end
Run Code Online (Sandbox Code Playgroud)