Rails 4.2.5 - 即使在指定deliver_later之后使用deliver_now的ActiveJob

时间:2017-10-30 09:37:21

标签: ruby-on-rails ruby-on-rails-4 actionmailer rails-activejob

我计划使用ActionMailer#deliver_later在Rails 4.2.5中异步发送邮件。

AppMailer文件使用“邮件”发送邮件和邮件。我使用deliver_later如下:

AppMailer.project_created_support_mail(@project).deliver_later

但是,日志显示传递的参数仍然是'deliver_now'

[ActiveJob] [ActionMailer::DeliveryJob] [b341ea8c-ca96-4a4e-8079-572925864352] Performing ActionMailer::DeliveryJob from Inline(mailers) with arguments: "AppMailer", "project_created_support_mail", "deliver_now"

我假设没有明确需要附加像Sidekiq或Resque这样的队列。

有人可以帮助理解我在这里缺少的东西吗?

编辑:我面临的最初问题是发送邮件的动作需要大约5秒,有或没有deliver_later。为了调试这个问题,我发现该参数仍然是'deliver_now'(上面的日志)。正如下面的@torrocus所指出的那样,在队列中调用'deliver_now'。但是,deliver_later需要约5秒的问题仍然存在。

1 个答案:

答案 0 :(得分:1)

当您调用#deliver_later方法时,您将作业放入队列Active Job中。在队列中,它调用#deliver_nowdeliver_later (ActionMailer::MessageDelivery)

在开发中,我建议使用gem mailcatcher