【问题标题】:Rufus scheduler Timeout::Error on Selenium SpecsRufus 调度程序 Timeout::Error on Selenium Specs
【发布时间】:2014-05-22 08:14:43
【问题描述】:

我在我的项目中使用 dashing-rails https://github.com/gottfrois/dashing-rails。它在 rails env 负载上运行 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

【问题讨论】:

  • 我是 rufus-scheduler 的作者,我可以证明我没有写任何东西来破坏你的集成测试。考虑为您的问题选择更智能的标题。

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


【解决方案1】:

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 环境设置为“测试”以进行集成测试,因此您必须找到一种方法来确定何时覆盖调度程序 #on_error 方法,这是您的问题。

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

如上所述,作为 rufus-scheduler 的作者,我没有编写 rufus-scheduler 来阅读诸如“Rufus scheduler 破坏集成测试”之类的标题,您的代码组合破坏了您的集成测试。承担责任。

【讨论】:

  • 谢谢。它把我带到了我接下来应该检查的地方。我很抱歉在发布它时没有仔细考虑标题。不打算让它听起来那样。我会更加注意我未来的问题。
  • 请随意更改标题和/或接受我的回答。提前致谢。
猜你喜欢
  • 1970-01-01
  • 2010-09-16
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
相关资源
最近更新 更多