2012-03-14 10 views
11

En mi entorno de desarrollo, utilizo una copia de la base de datos de producción cuando realizo las pruebas localmente. Por razones tanto para probar como para protegerse contra el envío de correos electrónicos de prueba/revelado a usuarios reales, ¿cuál es la mejor manera de anular la dirección de correo electrónico en modo de desarrollo?Anular el correo de ActionMailer a la dirección en el entorno de desarrollo

Sé que puedo escribir lógica en cada correo, pero tengo varias y sería bueno poner todo en una sola ubicación. ¿Puedo anular el método mail() de alguna manera para que el parámetro :to siempre apunte a una dirección de correo electrónico que especifique?

Respuesta

1

Usted could do un valor predeterminado de

class UserMailer < ActionMailer::Base 
    default :to=> "[email protected]" 
end 

y luego tomar la dirección de una opción en los métodos. De esta forma, se establecería de manera predeterminada en :to. Otra idea que tenía era un poco más:

class UserMailer < ActionMailer::Base 
    attr_accessor :email_address 

    def initialize 
    if RAILS_ENV == "development" 
     @email_address = "[email protected]" 
    end 
    end 
end 

que requeriría que configurar una nueva dirección en el código pero se sobrescribe cada vez que en el Desarrollo.

3

Lo que me gusta hacer es configurar anuncio publicitario de acción en el entorno de desarrollo para utilizar mailtrap.

27

Uso un ActionMailer interceptor para que todos los correos enviados mientras se encuentran en entornos de desarrollo o prueba se envíen a la misma dirección. De esta manera:

# config/initializers/override_mail_recipient.rb 
if Rails.env.development? or Rails.env.test? 
    class OverrideMailRecipient 
    def self.delivering_email(mail) 
     mail.to = '[email protected]' 
    end 
    end 
    ActionMailer::Base.register_interceptor(OverrideMailRecipient) 
end 
+0

Esto es bastante limpio en realidad. Gracias por el fragmento! – Calvin

Cuestiones relacionadas