Has*_*aut 5 ruby ruby-on-rails rack-middleware ruby-on-rails-4
我正在尝试学习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
Run Code Online (Sandbox Code Playgroud)
3) 添加config.middleware.use "ResponseTimer"到application.rb.
config.middleware.use "ResponseTimer"
Run Code Online (Sandbox Code Playgroud)
但是当我rake middleware在终端中执行命令时,它报告了这个错误:
rake aborted!
NameError: uninitialized constant ResponseTimer
Run Code Online (Sandbox Code Playgroud)
我也尝试添加config.middleware.use "ResponseTimer"的development.rb,但再次面临同样的错误。
我在这里缺少什么?
请帮忙。
中间件必须有一个附带的模块/类,并且需要在应用程序中加载才能被引用。在 Rails 中执行此操作的方法是autoloading(lib默认情况下不会自动加载文件):
#config/application.rb
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.middleware.use "ResponseTimer"
Run Code Online (Sandbox Code Playgroud)
以上应该对你有用。