繁体   English   中英

Rails 3延迟的工作-升级到Rails 3会中断delay_job任务

[英]Rails 3 delayed job - upgrading to Rails 3 breaks delayed_job tasks

我正在尝试将我们的应用程序部分升级到Rails 3,特别是我们的单元测试。 我一直遇到工作和邮件延迟的问题,特别是,在运行测试时,邮件没有被“发送”。

为了测试发送的电子邮件,我们通过测试帮助器中的“ assert_email”方法对它们全部运行,看起来或多或少像这样:

def process_delayed_jobs
  while Delayed::Worker.new(:quiet => true).send(:reserve_and_run_one_job) do
    # nothing
  end
end
alias_method :deliver_delayed_emails, :process_delayed_jobs

def assert_emails(number, skip_assertion = false)
  deliver_delayed_emails # start with a clean slate
  if block_given?
    original_count = ActionMailer::Base.deliveries.size
    yield
    deliver_delayed_emails
    new_count = ActionMailer::Base.deliveries.size
    assert_equal original_count + number, new_count, "#{number} emails expected, but #{new_count - original_count} were sent" unless skip_assertion
  else
    assert_equal number, ActionMailer::Base.deliveries.size unless skip_assertion
  end
end

我们像这样测试:

assert_emails 2 do
  Model.action_that_sends_mailer
end

这段代码在Rails 2中完美运行,运行delay_job 2.0.5。 在Rails 3上,我们正在运行2.1.4。

基本上,每次测试都失败,因为发送的电子邮件为“ 0”。 邮件程序本身已正确升级,并且我从方法调用中删除了错误的“ .deliver”以将其解雇。 delay_jobs日志为空,因此看起来没有任何处理。

我觉得这里缺少某种关键(但简单)的语法问题。 任何帮助表示赞赏。

编辑:我还应该注意,我已经在本地计算机上使用“ rails delay_job start”和“ script / delayed_job start”启动了delay_job进程。 都不能解决问题。

原来是与delay_job不相关的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM