【问题标题】:How to run and stop a delayed_jobs worker in a Thread or Subprocess for testing purposes如何在线程或子进程中运行和停止 delay_jobs 工作者以进行测试
【发布时间】:2011-03-11 23:59:34
【问题描述】:

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

为了完成这个创建了这个测试助手方法:

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

所以我可以在我的测试中写代码

with_delayed_jobs {
  ___test_content___
}

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

【问题讨论】:

  • 我不确定你想用@method_ran 完成什么。您的作业表中是否有作业排队?
  • 算了。为了测试这个东西,我把类/实例变量弄得一团糟。谢谢

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


【解决方案1】:

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

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

Docs are here, although they are sparse.

【讨论】:

  • 这会运行已经在队列中的作业。我不确定您的编辑想要显示什么。
  • 谢谢!正是我想要的!我需要这个在预定义的时间安排作业后立即执行工作人员。然后工作人员将在工作完成后运行并自行关闭。不错。
猜你喜欢
  • 2021-11-15
  • 2018-09-26
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2016-01-03
相关资源
最近更新 更多