3

Я использую delayed_job, и я очень доволен этим (особенно с расширением workless).Rails - Отправить все письма с задержкой_job асинхронно

Но я хотел бы установить, что ВСЕ почты из моего приложения отправляются асинхронно.

Действительно, решение, предложенное для почтовых программ

# without delayed_job 
Notifier.signup(@user).deliver 

# with delayed_job 
Notifier.delay.signup(@user) 

меня не устраивает, потому что:

  • это не легко ремонтопригодны
  • письма, отправленные из драгоценных камней не передаются асинхронно (devise, mailboxer)

Я могу использовать такого рода расширение https://github.com/mhfs/devise-async, но я бы предпочел выяснить решение для всего приложения сразу.

не Могу ли я продлить ActionMailer переопределить метод .deliver (как здесь https://stackoverflow.com/a/4316543/1620081, но это 4-х лет, как и почти все документ я нашел на эту тему)?

Я использую Ruby 1.9 и Rails 3.2 с activerecord.

Спасибо за поддержку

+0

Вы попробовали свое собственное предложение? Вам придется переопределить объект Mail :: Message, хотя – DiegoSalazar

ответ

0

простое решение было бы написать метод полезности на объекте Notifier следующим образом:

class Notifier 

    def self.deliver(message_type, *args) 
    self.delay.send(message_type, *args) 
    end 

end 

Отправить знак вверх по электронной почте следующим образом:

Notifier.deliver(:signup, @user) 

Метод полезности предоставляет единую точку, где, если необходимо, вы можете заменить замещенную работу на решения resque или sidekiq.

+0

Мне это нравится. Близко к тому, что я закончил делать, хотя я не обновлялся здесь, так как он не ответил точно на вопрос «Как поменять асинхронный почтовый ящик по умолчанию?» –

Смежные вопросы