我在我的项目中使用了dashing rails https://github.com/gottfrois/dashing-rails。它在rails env负载上运行rufus-调度器作业。
当我运行我的集成测试(rspec、capybara、selenium-驱动程序)时,我的一些测试由于rufus-调度器超时错误而随机失败。是否有一种方法可以在测试环境中使rufus调度程序错误保持沉默或完全禁用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发布于 2014-05-21 06:08:09
鲁弗斯调度器#on_error可能会有所帮助。它被记录在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 env设置为集成测试的“测试”,因此您必须找到一种方法来确定何时重写调度程序#on_error方法,这就是您的问题所在。
而且,rufus-调度器不会引发超时值::Error的实例,它会引发Rufus::Scheduler::TimeoutError的实例,因此您所看到的错误不是rufus-调度程序错误,它们只是被rufus-调度程序截获。
如前所述,作为Rufus-调度器的作者,我没有编写Rufus-调度器来读取诸如"Rufus调度程序破坏集成测试“这样的标题,您的代码组装会破坏您的集成测试。一定要承担责任。
https://stackoverflow.com/questions/23772797
复制相似问题