之前,我的中间件存放在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
的文件夹,并在其中创建中间件文件。Rails v5.2.2
中的加载路径中,app/middlewares
文件夹仍然无法加载。config.autoload_paths << "#{Rails.root}/app/middlewares"
config.eager_load_paths << "#{Rails.root}/app/middlewares"
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 "MyMiddleWare"
Is MyMiddleWare in app/middleware/my_middle_ware.rb ?
Is MyMiddleWare in lib/my_middle_ware.rb ?
将中间件作为字符串替换在config/application.rb
中的位置,改为作为常量放在config/environment/{environment}
中,这个方法解决了我的问题。