Rufus调度程序Timeout :: Selenium规范上的错误

时间:2014-05-21 01:55:58

标签: ruby-on-rails rufus-scheduler dashing

我在项目中使用了dashing-rails https://github.com/gottfrois/dashing-rails。它在rails env load上运行rufus-scheduler作业。

当我运行我的集成测试(rspec,capybara,selenium-driver)时,由于rufus-scheduler超时错误,我的一些测试会随机失败。有没有办法在测试环境中静音rufus-scheduler错误或完全禁用rufus?我不喜欢在我的代码库上做rails_env = test,所以任何其他解决方案都会受到赞赏。

示例错误如下所示:

{ 283064 rufus-scheduler intercepted an error:
  283064   job:
  283064     Rufus::Scheduler::EveryJob "10s" {}
  283064   error:
  283064     283064
  283064     Timeout::Error
  283064     Waited 3 sec

1 个答案:

答案 0 :(得分:0)

rufus-scheduler #on_error可以提供帮助。它记录在https://github.com/jmettraux/rufus-scheduler#rufusscheduleron_errorjob-error

例如:

if rails_env == 'test' # set the handler only when testing...
  def Dashing.scheduler.on_error(job, error)
    # keep silent, do nothing
  end
end

您似乎不想将Rails环境设置为" test"对于集成测试,所以你必须找到一种方法来确定何时覆盖调度程序#on_error方法,这是你的问题。

此外,rufus-scheduler不会引发Timeout :: Error的实例,它会引发Rufus :: Scheduler :: TimeoutError的实例,因此您看到的错误不是rufus-scheduler错误,它们只是被截获的鲁弗斯调度。

如上所述,作为rufus-scheduler的作者,我没有编写rufus-scheduler来读取像#34; Rufus调度程序打破集成测试等标题,你的代码组合打破了你的集成测试。承担责任。