概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: Ruby on Rails / Action Mailer interceptors - after create hook for your email
- 原文公開日: 2018/02/28
- 著者: Paweł Dąbrowsk
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』をどうぞお役立てください。