letter_opener_webとは
正しくメールを送信されるようになったか、またテンプレートを正しく書けているかを開発環境で動作確認できるgemです。
http://localhost:3000/letter_openerにアクセスすることで、下記の画像のように送信済みのメール一覧を閲覧することができるようになります。

公式でデモがありましたので、動作を確認できます。
インストール
公式を参考にインストールと設定をします。
開発環境でインストールします。
group :development do
gem 'letter_opener_web', '~> 2.0'
end
$ bundle install
設定
http://localhost:3000/letter_openerにアクセスできるようにするため、routes.rb
にルーティングを追加します。
Your::Application.routes.draw do
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
end
config/environments/development.rb
でdelivery_method
をletter_opener_web
に設定します。
config.action_mailer.delivery_method = :letter_opener_web
config.action_mailer.perform_deliveries = true # デフォルトではtrueなので、記載する必要は無い
delivery_method
は、メールの配信方法を指定します。
perform_deliveries
は、Mailのメッセージにdeliver
メソッドを実行したときに実際にメール配信を行なうかどうかを指定します。デフォルト(true)
では配信が行われます。
設定の詳細はRailsガイドを参考にしてください
これで、メールを送信すると、http://localhost:3000/letter_openerに送信済みメールが表示されるようになります。
動作確認
メイラーの設定は別途必要ですが、ここでは説明を省きます。

「メール送信」をクリックすると、deliver_now
メソッドでメールが送信されます。
送信後、http://localhost:3000/letter_openerにアクセス。
メールが正しく送信できているか、テンプレートは正しいかなどを確認できます。
おまけ:development.rbの設定による動作の違い
delivery_method
をletter_opener
に変更
config.action_mailer.delivery_method = :letter_opener
letter_opener
の機能が使用できるようになる。
letter_opener
は送信したメールをデフォルトのブラウザにプレビューしてくれます。
しかし、http://localhost:3000/letter_openerにアクセスしても、メールは閲覧できなくなります。

perform_deliveries
をfalse
に変更
config.action_mailer.perform_deliveries = false
false
にするとメールが送信されなくなるので、http://localhost:3000/letter_openerにアクセスしても、メールが表示されません。

まとめ
letter_opener_web
は、特に難しい設定をする必要が無いので、簡単に実装できます。
letter_opener
というgemもあるので、環境や好みで使い分けてください。
コメント