我正在使用 delayed_job我对此非常满意(尤其是 workless 扩展)。
但我想将来 self 的应用程序的所有邮件设置为异步发送。
确实是为邮寄者提供的解决方案
# without delayed_job
Notifier.signup(@user).deliver
# with delayed_job
Notifier.delay.signup(@user)
不适合我因为:
我可以使用这种扩展 https://github.com/mhfs/devise-async但我宁愿立即为整个应用找出解决方案。
我不能扩展 ActionMailer
来覆盖 .deliver
方法(就像这里的 https://stackoverflow.com/a/4316543/1620081 但它已经 4 岁了,就像我找到的几乎所有文档一样关于主题)?
我正在使用 Ruby 1.9 和 Rails 3.2 以及 activerecord。
感谢支持
最佳答案
一个简单的解决方案是在 Notifier 对象上编写一个实用方法,如下所示:
class Notifier
def self.deliver(message_type, *args)
self.delay.send(message_type, *args)
end
end
发送注册邮件如下:
Notifier.deliver(:signup, @user)
实用程序方法提供了一个单点,如果需要,您可以用 resque 或 sidekiq 解决方案替换延迟的作业。
关于ruby-on-rails - Rails - 异步发送所有带有 delayed_job 的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556050/