Что делает deliver! в Rails 3
September 28, 2011 in Ruby on RailsПотратил некоторое время на поиск неполадки в premailer-rails3 - гем, который “разворачивает” определения стилей в письмах. Наконец, нашел причину.
Собственно, мы также используем гем resque_mailer – он откладывает отправку почты в очередь Resque. Так вот, чтобы избежать отложенной отправки, я использова вместо Mail::Message#deliver
метод Mail::Message#deliver!
, и он отправлял почту немедленно. Что мне и нужно было.
Так вот, оказалось, что метод deliver! отправляет почту без вызова любых сторонних обработчиков – то есть, и resque_mailer
-а, и premailer-rails3
-а. Вот поэтому-то премейлер и не срабатывал!
Мораль: метод deliver! почти никогда не бывает полезен на практике. Можешь грепнуть его по своему проекту и раздать блеймов.
Понравился пост? Купи мне кофе