![](/img/trans.png)
[英]Proper way to use a Rack middleware from a gem in a Rails project with Bundler
[英]How to add rack middleware to rails app from gem
我正在处理事件处理程序以报告远程api的异常(类似于newrelic代理),我找不到将中间件添加到机架的方法,而不在environment.rb文件中执行此操作。
我不想在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
我可以找到包含它的唯一方法是将其添加到我的环境cofig:
config.middleware.use "ResponseTimer"
我已经使用rails工作了一年多,但这是我第一次使用机架和中间件。
任何建议表示赞赏!
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
http://rubylearning.com/blog/a-quick-introduction-to-rack/
对于机架的基本教程,一个明确的解释可能会解决您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.