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で突如エラーが起こったら

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

開発
Ruby 2.7.0-preview2がリリース

2019年10月23日

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ