簡體   English   中英

如何從gem中添加機架中間件到rails應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM