rails - 在延迟的作业中创建新作业

时间:2012-10-03 07:36:45

标签: ruby-on-rails-3 recursion delayed-job

我正在使用延迟方法在控制器中创建延迟作业,如下所示:

JobProcessor.delay(:run_at => Time.now).process_job(options)

现在在我正在进行的process_job方法中

chunks = options[:collection].each_splice(10).to_a
chunks.each do |chunk|
  self.delay(:run_at => Time.now).chunk_job
end

当我向网址

发送请求时,这给了我错误stack level too deep

可能是什么问题?请帮忙。

1 个答案:

答案 0 :(得分:1)

我能够通过做一些改变让它对我有用。

  • 我将外部方法process_job更改为实例方法
  • 并保留其余的代码。

所以现在我的代码看起来像

JobProcessor.new.process_job(options)

在控制器中,在JobProcessor类里面我有

class JobProcessor
  def process_job(options)
    chunks = options[:collection].each_splice(10).to_a
    chunks.each do |chunk|
      self.class.delay(:run_at => Time.now).chunk_job(options)
    end
  end
  handle_asynchronously :process_job, :run_at => Proc.new { 2.seconds.from_now }

  def self.chunk_job(options)
    # perform chunk job here
  end
end

这适合我。