Tech Racho エンジニアの「?」を「!」に。
  • 開発

Rails tips: ActionMailerのstaging向けインターセプターを作る(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

Rails tips: ActionMailerのstaging向けインターセプターを作る(翻訳)

インターセプター(intercept: 途中を捉える)とは、モデルのbefore_saveフックに似たフックの一種です。メールメッセージを配信前に編集したい場合にこのフックがぴったりです。staging環境で、すべてのメールをstaging@yourapp.comのメールボックスの受信箱に送りたいとしましょう。

インターセプターを作る

私はインターセプターをapp/interceptorsディレクトリの下に置いて*_interceptor.rbという命名パターンを用いるのが好みです。ここでは、StagingEmailInterceptorという名前のクラスで保存します。

class StagingEmailInterceptor
  def self.delivering_email(message)
    message.to = ['staging@yourapp.com']
  end
end

インターセプターを登録する

次の手順はインターセプターの登録です。config/initializers/ディレクトリにstaging_email_interceptor.rbという新しいイニシャライザを作成し、これを使いたいことをActionMailerに認識させます。

if Rails.env.staging?
  ActionMailer::Base.register_interceptor(StagingEmailInterceptor)
end

これでstaging環境でテストメールを安心して送れるようになりました。

お知らせ: RSpec & TDDの電子書籍を無料でダウンロード

もっと稼ぎたい方や会社をさらに発展させたい方へ: テスティングのスキルの重要性にお気づきでしょうか?テストを正しく書き始めることが、唯一のファーストステップです。無料でダウンロードいただける私の書籍『RSpec & Test Driven Developmentの無料ebook』をどうぞお役立てください。

関連記事

【Rails】ActionMailerで突如エラーが起こったら


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。