Sono sorpreso di quanto poco ci sia nella documentazione di Rails su questo.
Fondamentalmente, ActionMailer in Rails 3 introduce l'uso di Interceptor (chiamati prima che il messaggio venga inviato) e Observers (dopo che il messaggio è stato inviato).
Per configurare un osservatore, aggiungere il seguente ad un inizializzatore:
class MailObserver
def self.delivered_email(message)
# Do whatever you want with the message in here
end
end
ActionMailer::Base.register_observer(MailObserver)
Ora, il metodo delivered_email
verrà eseguito ogni volta che la vostra applicazione invia una e-mail. Tuttavia, avrai accesso solo al messaggio effettivo Mail
.
per registrare un intercettore invece, fanno lo stesso come sopra, sostituendo register_observer
con register_interceptor
, e rinomina il metodo dal self.delivered_email
a self.delivering_email
.
This Railscast era la migliore fonte che potessi trovare per informazioni su questo (si parla solo di intercettori, ma il concetto è lo stesso per gli osservatori).
fonte
2011-02-27 05:20:33
Grazie dmarkow, questo è esattamente quello che stavo cercando, e come hai detto, le informazioni sono scarse, soprattutto quando non si conosce il termine "Intercettori" è uno da cercare. – thomasfedb
Questo solleva qualche altra domanda: (1) Come diresti quale mailer e quale metodo è stato usato, (2) Come osserveresti il fallimento e (3) Come testesti questo, incluso il caso di fallimento? – user1158559
Posso confermare che funziona anche su Rails 4 –