Неинициализированная постоянная ошибка при переходе на 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 я получаю NameError: uninitialized constant Importer::CustomImportJob
ошибка при запуске rails zeitwerk:check
.
Я пытался переехать custom_import_job.rb
к jobs
каталог, но все равно получил ту же ошибку. Добавлениеapp/jobs/importer
к config.autoload_paths
тоже не помогло.
Что-то не так с файловой структурой или мне что-то не хватает в настройках Zeitwerk?
2 ответа
Покопавшись, я понял, что у меня в development.rb
:
Dir[Rails.root.join('app/jobs/importer/*.rb')].each { |f| require f }
Похоже, это и было причиной проблемы. Теперь, когда он удален, все работает, как ожидалось!
Вы можете посмотреть, находится ли ваше приложение / вакансии на пути:
ActiveSupport::Dependencies.autoload_paths
продлить на config.autoload_paths
в config/application.rb
если необходимо.
Дополнительная информация по отладке: https://guides.rubyonrails.org/autoloading_and_reloading_constants.html.
- Остановите весну. Перезагрузите сервер. Также может помочь.
Надеюсь, это поможет.