切换到Zeitwerk时出现未初始化的恒定错误



我目前在jobs目录中有以下文件:

# app/jobs/importer.rb
module Imporer
def self.valid_importers
# Do stuff
end
end
# app/jobs/importer/custom_import_job.rb
class Importer::CustomImportJob < ApplicationJob
def perform
# Do stuff
end
end

使用经典的代码加载程序可以正常工作,但当切换到Zeitwerk时,运行rails zeitwerk:check时会出现NameError: uninitialized constant Importer::CustomImportJob错误。

我尝试将custom_import_job.rb移动到jobs目录,但仍然收到相同的错误。将app/jobs/importer添加到config.autoload_paths也没有帮助。

文件结构是否有问题,或者我在Zeitwerk设置中遗漏了什么?

经过一番挖掘,我意识到我在development.rb中有以下内容:

Dir[Rails.root.join('app/jobs/importer/*.rb')].each { |f| require f }

这似乎就是问题的原因。现在它被移除了,一切都如预期的那样工作!

如果你的应用程序/作业在以下路径中,你可以看看:

ActiveSupport::Dependencies.autoload_paths

必要时在CCD_ 10中扩展CCD_。

更多调试信息:https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#troubleshooting.

  • 停止弹簧。重新启动服务器。也可能有所帮助

希望这些能有所帮助。

最新更新