ruby-on-rails-3 - rails generate email
¿Cómo creo un Mailer Observer? (1)
Me sorprende lo poco que hay en la documentación de Rails sobre esto.
Básicamente, ActionMailer in Rails 3 introduce el uso de interceptores (llamados antes de que se envíe el mensaje) y observadores (después de enviar el mensaje).
Para configurar un Observer, agregue lo siguiente a un inicializador:
class MailObserver
def self.delivered_email(message)
# Do whatever you want with the message in here
end
end
ActionMailer::Base.register_observer(MailObserver)
Ahora, el método delivered_email
se ejecutará cada vez que su aplicación envíe un correo electrónico. Sin embargo, solo tendrá acceso al mensaje de Mail
real.
Para registrar un Interceptor en su lugar, haga lo mismo que arriba, reemplazando register_observer
con register_interceptor
, y self.delivered_email
el nombre del método de self.delivered_email
a self.delivering_email
.
Este Railscast fue la mejor fuente que pude encontrar para obtener información sobre esto (solo hablan de interceptores, pero el concepto es el mismo para los observadores).
Me gustaría ejecutar algún código cada vez que se envíe un correo electrónico en mi aplicación.
Como ActionMailer no es compatible con after_filter, me gustaría usar un observador.
The Rails lo menciona al pasar, sin embargo no detalla.
¡Gracias!