2012-03-14 14 views
11

私の開発環境では、ローカルでテストするときに本番データベースのコピーを使用します。テストのためだけでなく、単にテスト/ dev電子メールを実際のユーザに送信することから保護するために、開発モードのときにメールアドレスを上書きする最良の方法は何ですか?開発環境でActionMailerのメールアドレスを無効にする

私は各メーラーに論理を書くことができると知っていますが、私はいくつか持っており、すべてを一度に置くのがいいでしょう。 :toパラメータを常に指定したメールアドレスを指すように、mail()メソッドを何とかオーバーライドできますか?その後、

答えて

1

あなたはcould do

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

のデフォルトとアドレス方法でオプションします。そのように設定すると、デフォルトで:toに設定されます。私が持っていたもう一つのアイデアは、もう少しだった:あなたのコードで新しいアドレスを設定する必要だろうが、それは開発中のたびに上書きされます

class UserMailer < ActionMailer::Base 
    attr_accessor :email_address 

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

3

私は何をしたいとすると、mailtrapを使用するために開発環境でアクションメーラーを構成しています。

27

私はActionMailer interceptorを使用しているため、開発環境やテスト環境で送信されたすべてのメールは同じアドレスに送信されます。このように:

# 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

これは実際にはきれいです。スニペットありがとう! – Calvin