我想设置一个后台Resque作业,该任务通过Rake任务在应用程序加载时启动。我正在使用将由许多类似应用程序使用的Rails引擎。我可以入队,但尝试执行时,总是从Resque收到“未初始化的常量”错误。
我能够排队工作,让一名工人上班,等等。在我的Resque rake文件中,它能够加载环境(因此,我相信...),并且需要作业类别。
在Resque Web前端中,所有作业均失败,并显示Uninitialized constant LinkEngine::SyncTaskParameters
。我读过的所有其他文章都说这是因为该类对Resque工作者不可用,并建议在Rakefile中要求它。我已经做到了,仍然遇到问题。我想这是使用引擎的一种复杂情况,但是我对Rails的经验不足,无法弄清楚。
Resque是在LinkEngine中配置的。
在engine.rb
中:
require "resque"
在link_engine_tasks.rake
中:
desc "Syncs parameters."
task :sync_task_parameters do
require 'link_engine/sync_parameters_job'
Resque.enqueue(LinkEngine::SyncTaskParameters)
end
在resque.rake
中:
require 'resque/tasks'
task 'resque:setup' => :environment do
require 'link_engine/sync_parameters_job'
end
有问题的作业SyncParametersJob
在LinkEngine的lib/link_engine/sync_parameters_job
上定义。
module LinkEngine
class SyncTaskParameters
@queue = :sync_task_parameters
def self.perform
# Do stuff
end
end
end