【问题标题】:How to add rack middleware to rails app from gem如何将机架中间件从 gem 添加到 rails 应用程序
【发布时间】:2013-12-17 09:17:12
【问题描述】:

我正在开发一个事件处理程序来向远程 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 已经一年多了,但这是我第一次使用机架和中间件。

感谢任何建议!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rack rack-middleware


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢,这正是我正在寻找的答案!
    【解决方案2】:

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

    机架的基础教程,一个清晰的解释可能会解决你的问题

    【讨论】:

      猜你喜欢
      • 2015-08-31
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多