Je suis étonné de voir à quel point la documentation de Rails à ce sujet est très limitée. Fondamentalement, ActionMailer dans Rails 3 introduit l'utilisation d'Intercepteurs (appelés avant l'envoi du message) et d'Observateurs (après l'envoi du message).
Pour mettre en place un observateur, ajouter ce qui suit à un initialiseur:
class MailObserver
def self.delivered_email(message)
# Do whatever you want with the message in here
end
end
ActionMailer::Base.register_observer(MailObserver)
Maintenant, la méthode delivered_email
se déroulera chaque fois que votre application envoie un e-mail. Cependant, vous n'aurez accès qu'au message Mail
.
pour enregistrer un intercepteur à la place, faire la même chose que ci-dessus, en remplaçant register_observer
avec register_interceptor
, et renommer le procédé self.delivered_email
-self.delivering_email
.
This Railscast était la meilleure source que je pouvais trouver pour info sur ce sujet (ils ne parlent que d'intercepteurs, mais le concept est le même pour les observateurs).
Merci dmarkow, c'est exactement ce que je cherchais, et comme vous l'avez dit, l'information est rare, surtout lorsque vous ne connaissez pas le terme "Interceptors". – thomasfedb
Cela soulève d'autres questions - (1) Comment diriez-vous quel mailer et quelle méthode a été utilisée, (2) Comment observeriez-vous l'échec et (3) Comment testeriez-vous cela, y compris le cas d'échec? – user1158559
Je peux confirmer cela fonctionne également dans Rails 4 –