Enviando emails em staging
Post rápido com uma dica simples para evitar que tarefas que enviam emails sejam disparadas em ambiente de homologação/staging e notificando usuários reais com emails indesejados.
Na verdade este post é mais para me lembrar de não cometer essa cagada mais uma vez e evitar que algum dia isso seja realmente desastroso :–)
O que pouca gente sabe é que como Rails 3.+ usa o Mail para envio de emails da para usarmos seus interceptors para resolver esse problema. É só criar um interceptor básico que força o destinatário ser uma conta de testes do site.
Eu começo criando um interceptor dentro da pasta lib, desta forma::
class MailInterceptor
def self.delivering_email(message)
message.subject = "[#{message.to}] #{message.subject}"
message.to = "projetox@objetiva.co"
end
end
Em seguida, o que costumo fazer é criar um initializer que normalmente chamo de setup_mail_interceptor.rb com o conteúdo abaixo:
Mail.register_interceptor(MailInterceptor) if Rails.env.staging?
Pronto, só isso… não tem necessidade usar gems tipo mail_safe e derivados para algo tão simples.