我希望所有排队调用都默认到某个队列,除非另有指定,这样它是 DRY 并且更易于维护。为了指定一个队列,文档说要在类中定义一个变量@queue = X。所以,我尝试执行以下操作,但没有成功,有什么想法吗?
class ResqueJob
class << self; attr_accessor :queue end
@queue = :app
end
class ChildJob < ResqueJob
def self.perform
end
end
Resque.enqueue(ChildJob)
Resque::NoQueueError: Jobs must be placed onto a queue.
from /Library/Ruby/Gems/1.8/gems/resque-1.10.0/lib/resque/job.rb:44:in `create'
from /Library/Ruby/Gems/1.8/gems/resque-1.10.0/lib/resque.rb:206:in `enqueue'
from (irb):5
在 ruby 中,类变量不是继承的。这就是 Resque 找不到您的 @queue 变量的原因。
你应该定义self.queue
在你的父班里。 Resque 首先检查 @queue 是否存在,然后再查找queue
类方法:
class ResqueJob
def self.queue; :app; end
end
class ChildJob < ResqueJob
def self.perform; ...; end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)