Неинициализированная константа ActiveJob
У меня странная проблема с ActiveJob
,
Из контроллера я выполняю следующее предложение:
ExportJob.set(wait: 5.seconds).perform([A series of parameters, basically strings and integers])
ExportJob.rb
require_relative 'blablabla/resource_manager'
class ExportJob < ActiveJob::Base
def perform
ResourceManager.export_process([A series of parameters, basically strings and integers])
end
end
Когда контроллер / действие выполняется в первый раз, процесс идет нормально, но во второй раз выдается ошибка:
uninitialized constant ExportJob::ResourceManager
Странно то, что это не единственная работа, которую я выполняю в своем проекте, остальные выполняются без проблем.
Я прилагаю некоторую информацию о моем проекте:
разработка / production.rb
config.active_job.queue_adapter = :delayed_job
Gemfile:
gem 'delayed_job'
gem 'delayed_job_active_record'
Любая подсказка поможет мне.
Заранее спасибо!
1 ответ
Константы не имеют глобальной области видимости в Ruby. Константы могут быть видны из любой области, но вы должны указать, где должна быть найдена константа.
Без ::
Руби ищет ResourceManager
константа в лексической области текущего выполняемого кода (который ExportJob
класс, так что он ищет ExportJob::ResourceManager
).
Следующее должно работать (при условии, что ResourceManager
определяется как константа верхнего уровня (например, не вложенная ни в один модуль / класс):
class ExportJob < ActiveJob::Base
def perform
::ResourceManager.export_process(*args)
end
end