2

我目前在目录中有以下文件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

使用经典代码加载器可以正常工作,但是在切换到 ZeitwerkNameError: uninitialized constant Importer::CustomImportJob时,运行时出现错误rails zeitwerk:check

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

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

4

2 回答 2

4

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

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

看来这是问题的原因。现在一切都按预期工作,因为它已被删除!

于 2020-03-23T20:42:28.557 回答
0

如果您的 app/jobs 在路径中,您可以查看一下:

ActiveSupport::Dependencies.autoload_paths

如有必要,请延长config.autoload_pathsconfig/application.rb

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

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

希望这些有所帮助。

于 2020-03-23T14:13:45.377 回答