Rails 4.2 应用中如何添加中间件

How to add middleware in Rails 4.2 application

我正在尝试学习 Middlewares 并一直在练习如何将其安装到 Rails 应用程序中。我关注了 railscast

到目前为止,我已经实施了这些步骤:

1) 创建了一个名为:Blog

的新 Rails 4.2 应用程序

2) 在 lib 文件夹中添加了一个名为 response_timer.rb.

的文件
class ResponseTimer
  def initialize(app)
    @app = app
  end

  def call(env)
    [200, {"Content-Type" => "text/html"}, "Hello World"]
  end
end

3) 在 application.rb 中添加了 config.middleware.use "ResponseTimer"

config.middleware.use "ResponseTimer"

但是当我在终端中输入命令 rake middleware 时,它报告了这个错误:

rake aborted!
NameError: uninitialized constant ResponseTimer

我也尝试在 development.rb 中添加 config.middleware.use "ResponseTimer" 但再次面临同样的错误。

我在这里错过了什么?

请帮忙。

参考文章:http://guides.rubyonrails.org/rails_on_rack.html

我遵循了这个答案:

我之前尝试过,但之前可能漏掉了什么。

appliation.rb

require 'rails/all'
require_relative '../lib/response_timer'
module Blog
 class Application < Rails::Application
  ...
  config.middleware.use ResponseTimer
 end
end

中间件必须有一个附带的模块/class,并且需要在应用程序中加载它才能被引用。在 Rails 中执行此操作的方法是使用 autoloadinglib 文件默认不会自动加载):

#config/application.rb
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.middleware.use "ResponseTimer"

以上应该适合你。