以前我在lib / middleware / my_middle_ware.rb
下有我的中间件然而,当这样做时,
config.middleware.use MyMiddleWare
我收到了
NameError: uninitialized constant
rails在哪里寻找中间件?
答案 0 :(得分:6)
看起来铁路还没有找到它。
我必须做以下工作才能发挥作用。
Dir["./lib/middleware/*.rb"].each do |file|
require file
end
答案 1 :(得分:1)
我认为您希望将中间件添加到config/application.rb
或config/environments
文件中。
config.middleware.use MyMiddleWare
这应该可以工作并将MyMiddleWare
附加到中间件堆栈的底部。
答案 2 :(得分:0)
即使在加载app / middleware内容之前,如果' config.middleware.use'被称为,我认为你得到了未初始化的常量错误'。以下应该修复
config.middleware.use "MyMiddleWare"
如果上述方法无效,则以下其中一项可能为“否”。
Is MyMiddleWare in app/middleware/my_middle_ware.rb ?
Is MyMiddleWare in lib/my_middle_ware.rb ?
答案 3 :(得分:0)
将中间件作为字符串从config/application.rb
替换为config/environment/{environment}
作为常量为我解决了这个问题
答案 4 :(得分:0)
创建一个文件夹values-it-land\strings.xml
,并在此文件夹中创建中间件文件。
但不幸的是,即使我已将app/middlewares
的文件夹添加到app/middleware
的加载路径中,也无法加载文件夹{p>
Rails v5.2.2
因此您可以按如下所示明确使用require,在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
来查看中间件堆栈。