我正在尝试学习Middlewares
并一直在练习如何在Rails应用程序中安装它。我已经关注了railscast
到目前为止,我已实施了以下步骤:
1)创建了一个名为:Blog
的新Rails 4.2
应用程序
2)在名为lib
的{{1}}文件夹中添加了一个文件。
response_timer.rb
3)在class ResponseTimer
def initialize(app)
@app = app
end
def call(env)
[200, {"Content-Type" => "text/html"}, "Hello World"]
end
end
中添加了config.middleware.use "ResponseTimer"
。
application.rb
但是当我点击终端中的config.middleware.use "ResponseTimer"
命令时,它会报告此错误:
rake middleware
我还尝试在rake aborted!
NameError: uninitialized constant ResponseTimer
中添加config.middleware.use "ResponseTimer"
,但又面临同样的错误。
我在这里缺少什么?
请帮忙。
答案 0 :(得分:4)
中间件必须有一个附带的模块/类,需要先加载到应用程序中才能引用它。在Rails中执行此操作的方法是使用autoloading
(默认情况下lib
文件未自动加载):
#config/application.rb
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.middleware.use "ResponseTimer"
上述内容对您有用。
答案 1 :(得分:-2)
我按照这个回答:https://stackoverflow.com/a/24122424
我之前尝试过,但可能之前错过了什么。
在appliation.rb
require 'rails/all'
require_relative '../lib/response_timer'
module Blog
class Application < Rails::Application
...
config.middleware.use ResponseTimer
end
end