以前我在 lib/middleware/my_middle_ware.rb 下有我的中间件
然而,在这样做的时候,
config.middleware.use MyMiddleWare
我收到一个
NameError: uninitialized constant
rails 在哪里寻找中间件?
以前我在 lib/middleware/my_middle_ware.rb 下有我的中间件
然而,在这样做的时候,
config.middleware.use MyMiddleWare
我收到一个
NameError: uninitialized constant
rails 在哪里寻找中间件?
看起来 Rails 不是在寻找它。
我必须执行以下操作才能使其正常工作。
Dir["./lib/middleware/*.rb"].each do |file|
require file
end
创建一个文件夹app/middlewares
并在此文件夹中创建您的中间件文件。
但不幸的app/middleware
是,即使我添加到加载路径中,s 文件夹也没有加载Rails v5.2.2
config.autoload_paths << "#{Rails.root}/app/middlewares"
config.eager_load_paths << "#{Rails.root}/app/middlewares"
所以你可以像下面这样显式使用require,在里面添加这一行application.rb
require_relative '../app/middlewares/my_middleware'
并加载中间件:
config.middleware.use MyMiddleware
并调用rake middleware
以查看中间件堆栈。
我相信您想将中间件添加到您config/application.rb
的config/environments
文件中。
config.middleware.use MyMiddleWare
这应该可以工作并附MyMiddleWare
加到中间件堆栈的底部。
如果调用“config.middleware.use”,甚至在加载应用程序/中间件内容之前,我认为您会收到“未初始化的常量错误”。下面应该修复
config.middleware.use "MyMiddleWare"
如果上述方法不起作用,则以下其中一项可能是否。
Is MyMiddleWare in app/middleware/my_middle_ware.rb ?
Is MyMiddleWare in lib/my_middle_ware.rb ?
将中间件作为字符串替换为config/application.rb
常量config/environment/{environment}
为我解决了这个问题