我目前在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目录,但仍然收到相同的错误。向config.autoload_paths添加app/jobs/importer也无济于事。
是文件结构有问题还是我在Zeitwerk设置中遗漏了什么?
发布于 2020-03-24 04:42:29
在深入研究之后,我意识到我在development.rb中有以下内容
Dir[Rails.root.join('app/jobs/importer/*.rb')].each { |f| require f }似乎这就是问题的原因。现在一切都按预期进行了,因为它被移除了!
发布于 2020-03-23 22:13:45
如果你的app/job在路径中,你可以看看:
ActiveSupport::Dependencies.autoload_paths如有必要,通过config/application.rb中的config.autoload_paths进行扩展。
更多调试信息:https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#troubleshooting。
希望这些能有所帮助。
https://stackoverflow.com/questions/60814100
复制相似问题