gpt4 book ai didi

ruby-on-rails - 如何指定默认队列以用于 Rails 中 Resque 的所有作业?

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:14 24 4
gpt4 key购买 nike

除非另有说明,否则我希望所有入队调用都默认到某个队列,这样它是 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

关于ruby-on-rails - 如何指定默认队列以用于 Rails 中 Resque 的所有作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com