【发布时间】:2020-01-06 14:53:05
【问题描述】:
升级到 Rails 6 后,我注意到默认邮件程序的 .deliver_later 与 Rails 5 中的工作方式不同。
配置:
config.active_job.queue_adapter = :inline
运行Mailer.register_email(...).deliver_later 时,ActionMailer::Base.deliveries 中没有存储任何内容。如果我运行perform_enqueued_jobs,这个数组就会被填满——它看起来像queue_adapter = :inline 并没有按照我期望的方式工作。
如果我运行Mailer.send(...).deliver_now,那么ActionMailer::Base.deliveries 就有适当的价值。
知道为什么会发生这种情况以及如何解决这个问题吗?
【问题讨论】:
-
这种行为在 Rails 5 和 Rails 6 之间发生了变化。我找不到在哪里,但我确实看到 Rails 现在在他们的 Minitest 电子邮件帮助程序中调用
perform_enqueued_jobs。他们添加了一个过滤器以确保仅以这种方式执行电子邮件作业。 github.com/rails/rails/blob/master/actionmailer/lib/…
标签: delayed-job ruby-on-rails-6