使用gem自动添加机架中间件

时间:2011-04-20 11:50:10

标签: ruby rubygems rack

我有一个提供一些机架中间件的gem,我能让它工作的唯一方法是将它放在我的application.rb

config.middleware.use "TBBC::Editor::Middleware"

如何在我的gem在应用程序Gemfile中使用时自动使用此中间件?

1 个答案:

答案 0 :(得分:12)

如果您打算将宝石与Rails 3一起使用,则可以提供Railtie。然后,您可以在使用Rails的情况下自动加载它。

假设您的宝石名称为tbbc,请将其放在lib/tbbc/railtie.rb中:

module TBBC
  class Railtie < Rails::Railtie
    initializer "tbbc.insert_middleware" do |app|
      app.config.middleware.use "TBBC::Editor::Middleware"
    end
  end
end

lib/tbbc.rb

require "tbbc/railtie" if defined? Rails

您无法自动将中间件添加到通用Rack应用程序中。对于非Rails应用程序,这将是用户必须做的事情。