ActiveJob未初始化的常量

时间:2016-01-07 12:39:43

标签: ruby-on-rails ruby rails-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 个答案:

答案 0 :(得分:1)

常量在Ruby中没有全局范围。常量可以在任何范围内显示,但您必须指定常量的位置。

没有:: Ruby在当前正在执行的代码(ResourceManager类的词法范围内查找ExportJob常量,因此它会查找ExportJob::ResourceManager)。

以下内容应该有效(假设ResourceManager被定义为顶级常量(例如,没有嵌套在任何模块/类下):

class ExportJob < ActiveJob::Base
  def perform
    ::ResourceManager.export_process(*args)
  end
end