我正在开发一个事件处理程序来向远程 api 报告异常(类似于 newrelic 代理),如果不在 environment.rb 文件中执行,我找不到将我的中间件添加到 Rack 的方法。
我不想在 environment.rb 文件中执行此操作,因为我计划将它变成一个 gem,并且我想尽量减少安装过程。
这是我想添加到我的应用程序中的简单中间件:
#/lib/response_timer.rb
class ResponseTimer
def initialize(app)
@app = app
end
def call(env)
#do something here
@app.call(env)
end
end
我能找到包含它的唯一方法是将其添加到我的环境配置中:
config.middleware.use "ResponseTimer"
我使用 Rails 才一年多,但这是我第一次接触 Rack 和中间件。
感谢任何建议!
最佳答案
Gems 可以通过提供 Railtie 来配置它们的主机应用程序.
例如,这是 BetterErrors gem 的简化版本这样做:
module BetterErrors
class Railtie < Rails::Railtie
initializer "better_errors.configure_rails_initialization" do
Rails.application.middleware.use BetterErrors::Middleware
end
end
end
关于ruby-on-rails - 如何将 Rack 中间件添加到 gem 的 Rails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20630171/