5

我正在开发一个事件处理程序以向远程 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

我能找到包含它的唯一方法是将其添加到我的环境配置中:

config.middleware.use "ResponseTimer"

我使用 Rails 已经一年多了,但这是我第一次使用机架和中间件。

任何建议表示赞赏!

4

2 回答 2

17

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
于 2013-12-17T10:13:35.393 回答
-6

http://rubylearning.com/blog/a-quick-introduction-to-rack/

对于 rack 的基础教程,一个清晰的解释可能会解决你的问题

于 2013-12-17T10:01:27.227 回答