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'
任何线索对我都有帮助。
提前致谢!
答案 0 :(得分:1)
常量在Ruby中没有全局范围。常量可以在任何范围内显示,但您必须指定常量的位置。
没有::
Ruby在当前正在执行的代码(ResourceManager
类的词法范围内查找ExportJob
常量,因此它会查找ExportJob::ResourceManager
)。
以下内容应该有效(假设ResourceManager
被定义为顶级常量(例如,没有嵌套在任何模块/类下):
class ExportJob < ActiveJob::Base
def perform
::ResourceManager.export_process(*args)
end
end