【发布时间】:2019-10-17 12:24:42
【问题描述】:
我正在使用一个初始化程序,它通过将一些应用程序关注点包含到第三方库中来对应用程序进行一些猴子修补。基本上:
# config/initializers/my_initializer.rb
class SomeExternalLib
include MyConcern1
include MyConcern2
end
这在 Rails 5.2.3 中运行良好,但在升级到 Rails 6 时收到以下弃用消息:
弃用警告:初始化自动加载常量 MyConcern1 和 MyConcern2。
不赞成这样做。初始化期间的自动加载正在进行 成为未来版本的 Rails 中的错误条件。
重新加载不会重新启动应用程序,因此在 初始化不再运行。因此,例如,如果您重新加载 ApplicationHelper, 预期的更改不会反映在该陈旧的 Module 对象中。
这些自动加载的常量已被卸载。
请查看“自动加载和重新加载常量”指南以获取解决方案。 (从 /Users/myuser/code/myapp/config/environment.rb:7 调用)
我担心的是 app/controllers/concerns/。经过一番调查,我发现该路径没有被自动加载,但我不知道如何使 Zeitwerk(Rails 6 的新自动加载器)动态加载它。我尝试遵循here 描述的 STI 自动加载模式,但没有运气。知道如何解决此弃用警告吗?
【问题讨论】:
标签: ruby-on-rails ruby autoload ruby-on-rails-6