【问题标题】:How do I silence the delayed_job output in test?如何在测试中使 delay_job 输出静音?
【发布时间】:2026-02-05 17:40:02
【问题描述】:

我正在使用delayed_job 处理后台任务,例如系统电子邮件和不同的定时事件。我使用 Delayed::Worker.new.work_off 来处理我的 RSpec 测试中的事件,但随后测试输出中到处都是 sh*t,例如:

[Worker(host:ch.local pid:24307)] RPM Monitoring DJ worker host:ch.local pid:24307 
[Worker(host:ch.local pid:24307)] acquired lock on ListingJob
[Worker(host:ch.local pid:24307)] ListingJob completed after 0.0655

我知道输出有助于调试,但有没有办法让它静音?我宁愿在测试无法调试时启用它,而不是一直打开它。

谢谢。

【问题讨论】:

    标签: ruby-on-rails logging rspec delayed-job


    【解决方案1】:

    试试这个:

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

    通过告诉工作人员保持安静,它应该清理垃圾邮件...

    【讨论】:

    • 谢谢。我还分叉了项目并添加了一个默认标志,以便您可以在初始化程序中将默认设置为安静。提出一个拉取请求,但我们会看看它是否被接收。