首页 > 解决方案 > 切换到 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

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

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

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

标签: ruby-on-railszeitwerk

解决方案


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

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

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


推荐阅读