如何在Rails 4.2应用程序

时间:2016-01-19 07:36:56

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

我正在尝试学习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",但又面临同样的错误。

我在这里缺少什么?

请帮忙。

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

2 个答案:

答案 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