我计划使用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秒的问题仍然存在。
答案 0 :(得分:1)
当您调用#deliver_later
方法时,您将作业放入队列Active Job中。在队列中,它调用#deliver_now
。
deliver_later (ActionMailer::MessageDelivery)
在开发中,我建议使用gem mailcatcher