Неинициализированная постоянная ошибка при переключении на Zeitwerk - PullRequest
0 голосов
/ 23 марта 2020

У меня в настоящее время есть следующие файлы в каталоге 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

Это работает без проблем при использовании загрузчика кода classi c, но при переключении на Zeitwerk я получаю NameError: uninitialized constant Importer::CustomImportJob ошибка при запуске rails zeitwerk:check.

Я попытался переместить custom_import_job.rb в каталог jobs, но все равно получил ту же ошибку. Добавление app/jobs/importer к config.autoload_paths тоже не помогло.

Что-то не так с файловой структурой или я что-то упустил в настройках Zeitwerk?

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

После некоторого копания я понял, что у меня в development.rb было следующее:

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

Кажется, это было причиной проблемы. Теперь все работает, как и ожидалось, после удаления!

0 голосов
/ 23 марта 2020

Вы можете посмотреть, если ваше приложение / задание находится в пути:

ActiveSupport::Dependencies.autoload_paths

расширить на config.autoload_paths в config/application.rb при необходимости.

Дополнительная информация об отладке: https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#troubleshooting.

  • Стоп-пружина. Перезагрузите сервер. Может также помочь.

Надеюсь, это поможет.

...