Enviando emails em staging

Posted by Daniel Lopes on 11/01/2012

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.

blog comments powered by Disqus