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

到目前为止,我已经实现了以下步骤:

1)创建了一个新的Rails 4.2应用程序,名为:Blog

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)在config.middleware.use "ResponseTimer"中添加了application.rb
config.middleware.use "ResponseTimer"

但是当我在终端中命中rake middleware命令时,它正在报告此错误:
rake aborted!
NameError: uninitialized constant ResponseTimer

我也尝试在config.middleware.use "ResponseTimer"中添加development.rb,但再次遇到相同的错误。

我在这里想念什么?

请帮忙。

引用文章:http://guides.rubyonrails.org/rails_on_rack.html

最佳答案

中间件必须具有随附的模块/类,并且需要先在应用程序中加载中间件才能被引用。在Rails中执行此操作的方法是使用 autoloading (默认情况下不会自动加载lib文件):

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

上面的应该为您工作。

关于ruby-on-rails - 如何在Rails 4.2应用程序中添加中间件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34870990/

10-12 05:37