我应该将 Rails 5.1 的中间件文件放在哪里?
Where should I place my middleware file for Rails 5.1?
之前我的中间件在 lib/middleware/my_middle_ware.rb
但是当这样做时,
config.middleware.use MyMiddleWare
我收到了
NameError: uninitialized constant
rails 在哪里寻找中间件?
我相信您想将中间件添加到您的 config/application.rb
或 config/environments
文件中。
config.middleware.use MyMiddleWare
这应该有效并将 MyMiddleWare
附加到中间件堆栈的底部。
即使在 app/middleware 内容加载之前,如果调用 'config.middleware.use',我想你会得到 'uninitialized Constant error'。下面应该修复
config.middleware.use "MyMiddleWare"
如果以上方法不起作用,则以下方法之一可能是不行的。
Is MyMiddleWare in app/middleware/my_middle_ware.rb ?
Is MyMiddleWare in lib/my_middle_ware.rb ?
看起来 rails 并没有在寻找它。
我必须执行以下操作才能正常工作。
Dir["./lib/middleware/*.rb"].each do |file|
require file
end
将 config/application.rb
中的中间件替换为字符串 config/environment/{environment}
作为常量解决了我的问题
创建一个文件夹 app/middlewares
并在此文件夹中创建您的中间件文件。
但不幸的是,即使我添加到 Rails v5.2.2
中的加载路径,app/middleware
s 文件夹也没有加载
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
查看中间件堆栈。
之前我的中间件在 lib/middleware/my_middle_ware.rb
但是当这样做时,
config.middleware.use MyMiddleWare
我收到了
NameError: uninitialized constant
rails 在哪里寻找中间件?
我相信您想将中间件添加到您的 config/application.rb
或 config/environments
文件中。
config.middleware.use MyMiddleWare
这应该有效并将 MyMiddleWare
附加到中间件堆栈的底部。
即使在 app/middleware 内容加载之前,如果调用 'config.middleware.use',我想你会得到 'uninitialized Constant error'。下面应该修复
config.middleware.use "MyMiddleWare"
如果以上方法不起作用,则以下方法之一可能是不行的。
Is MyMiddleWare in app/middleware/my_middle_ware.rb ?
Is MyMiddleWare in lib/my_middle_ware.rb ?
看起来 rails 并没有在寻找它。
我必须执行以下操作才能正常工作。
Dir["./lib/middleware/*.rb"].each do |file|
require file
end
将 config/application.rb
中的中间件替换为字符串 config/environment/{environment}
作为常量解决了我的问题
创建一个文件夹 app/middlewares
并在此文件夹中创建您的中间件文件。
但不幸的是,即使我添加到 Rails v5.2.2
app/middleware
s 文件夹也没有加载
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
查看中间件堆栈。