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

标签 ruby-on-rails ruby resque

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

相关文章:

javascript - 有没有办法使用 <Component/> 在 ERB 中呈现 React 组件?

ruby-on-rails - 允许使用咆哮或终端通知程序进行 guard

ruby-on-rails - 在客户端等待时使用工作人员处理作业,并在完成后返回响应

ruby - 如何对 Resque 执行方法或 Resque Job 类进行基准测试?

ruby-on-rails - 如何在 Rails 中管理后台服务器池

ruby-on-rails - 每次运行测试时,Rspec 和 Capybara 都会抛出不一致的 Postgresql 错误

javascript - 限制文本区域中的字符数,用于 Javascript 的 Rails

ruby-on-rails - Ruby on Rails - 如何以彩色打印日志消息

ruby - 如何对数组中数组的每个唯一元素求和

mysql - Ror 创建表关联