Обнаружена проблема!
delayed_job не очень хорошо работает с рельсами 3.1, и вы должны использовать этот новый синтаксис:
EmailEngine.delay.deliver_and_save(template) # I was already doing this.
который он автоматически пытается вызвать .deliver
объекта Mail :: Message, который возвращает deliver_and_save
.(Так вот, у меня проблема: я пытаюсь позвонить .deliver
.)
РЕШЕНИЕ: Я изменил код и позвонил Email.create(..
где-то за пределами EmailEngine
, а затем позвонил EmailEngine.delay.send(template)
полностью и полностью удален deliver_and_save
.
Woo!
Btw, любой метод, вызванный для класса, который наследуется от ActionMailer, вернет объект Mail :: Message ,ActionMailer делает некоторую чёрную магию, чтобы это произошло (перезаписывая Ruby method_missing
, чтобы он мог отображать представления точно так же, как контроллер, хотя во многих отношениях он ведет себя как модель).