Rails 6和delivery_later不会影响ActionMailer :: Base.deliveries

kna*_*ode 5 delayed-job ruby-on-rails-6

升级到Rails 6之后,我注意到默认邮件发送器的.deliver_later工作方式与Rails 5中的不同。

组态:

config.active_job.queue_adapter = :inline
Run Code Online (Sandbox Code Playgroud)

运行时Mailer.register_email(...).deliver_later-不会存储任何内容ActionMailer::Base.deliveries。如果我运行,此数组将被填充perform_enqueued_jobs-好像queue_adapter = :inline无法按我期望的方式工作。

如果我跑步,Mailer.send(...).deliver_nowActionMailer::Base.deliveries具有适当的价值。

知道为什么会这样以及如何解决吗?

小智 6

我在测试中遇到了同样的问题。在互联网上搜索一无所获,所以我开始尝试。

我尝试将发送邮件的调用方法包装在

assert_emails 1 do
  Mailer.register_email(...).deliver_later
end
Run Code Online (Sandbox Code Playgroud)

之后,ActionMailer::Base.deliveries正确填充。