如何在线程或子进程中运行和停止delayed_jobs worker以进行测试

时间:2011-03-10 18:38:05

标签: ruby-on-rails ruby multithreading testing delayed-job

我希望能够执行一些需要工作人员运行的测试。

为了实现这个,我们创建了这个测试辅助方法:

def with_delayed_jobs
  t=Thread.new {Delayed::Worker.new.start}
  sleep(5)
  yield
  t.exit
end

所以我可以写我的测试

with_delayed_jobs {
  ___test_content___
}

不幸的是,工人似乎没有这样做。也许我可以用流程做到这一点。有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用以下命令运行当前在作业表中的作业:

 Delayed::Worker.new(
          :max_priority => nil,
          :min_priority => nil,
          :quiet => true
        ).work_off

Docs are here, although they are sparse.