【发布时间】:2023-10-24 07:13:01
【问题描述】:
我有一个提供一些机架中间件的 gem,我可以让它工作的唯一方法是将它放在我的 application.rb 中
config.middleware.use "TBBC::Editor::Middleware"
当我的 gem 用于应用程序 Gemfile 时,我怎样才能使这个中间件自动使用?
【问题讨论】:
我有一个提供一些机架中间件的 gem,我可以让它工作的唯一方法是将它放在我的 application.rb 中
config.middleware.use "TBBC::Editor::Middleware"
当我的 gem 用于应用程序 Gemfile 时,我怎样才能使这个中间件自动使用?
【问题讨论】:
如果您希望您的 gem 与 Rails 3 一起使用,您可以提供Railtie。然后,您可以在使用 Rails 时自动加载它。
假设您的 gem 的名称是 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 应用程序,这将是用户必须做的事情。
【讨论】:
Rails::Railtie的子类吗?