为ActionMailer deliver_later设置默认队列?

Hal*_*sen 21 actionmailer ruby-on-rails-4.2

您可以通过添加:queue作为可选参数来指定在ActionMailer中调用deliver_later时要使用的队列,例如:

Notifier.welcome(User.first.id).deliver_later(queue: "low")

对于所有ActionMailers,有没有办法以一般方式执行此操作?要设置默认的ActionMailer队列?

mrs*_*tif 37

在Rails之前5

通过Rails的源代码,您可以看到他们已经将默认队列名称设置为" 邮件程序 ".

但是,如果要更改该默认值,可以通过在初始化程序或加载的lib文件中包含以下代码来覆盖它:

class ActionMailer::DeliveryJob
  queue_as :default_mailer_queue
end
Run Code Online (Sandbox Code Playgroud)

自Rails 5

Rails 5允许您通过简单配置来设置默认队列命名.

例如加你application.rb:

config.action_mailer.deliver_later_queue_name = 'default_mailer_queue'
Run Code Online (Sandbox Code Playgroud)

  • Rails 5中将有一个配置选项:https://github.com/rails/rails/commit/f5a131aaeaf0533e5f81461c2ad63474a865c19c#diff-97c5eb1c8630a41aec5c7b5453236d62 (8认同)