- 開発
READ MORE
原著者の許諾を得て翻訳・公開いたします。
インターセプター(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 & Test Driven Developmentの無料ebook』をどうぞお役立てください。