【Ruby on Rails】latter_opener_webでメールの動作を簡単に確認する

Ruby on Rails

letter_opener_webとは

正しくメールを送信されるようになったか、またテンプレートを正しく書けているかを開発環境で動作確認できるgemです。

http://localhost:3000/letter_openerにアクセスすることで、下記の画像のように送信済みのメール一覧を閲覧することができるようになります。

メール一覧を閲覧できるインターフェースが利用できる

公式でデモがありましたので、動作を確認できます。

Application Error

インストール

公式を参考にインストールと設定をします。

開発環境でインストールします。

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.rbdelivery_methodletter_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_methodletter_openerに変更

config.action_mailer.delivery_method = :letter_opener

letter_openerの機能が使用できるようになる。

letter_openerは送信したメールをデフォルトのブラウザにプレビューしてくれます。

しかし、http://localhost:3000/letter_openerにアクセスしても、メールは閲覧できなくなります。


perform_deliveriesfalseに変更

config.action_mailer.perform_deliveries = false

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

まとめ

letter_opener_webは、特に難しい設定をする必要が無いので、簡単に実装できます。

letter_openerというgemもあるので、環境や好みで使い分けてください。

コメント

タイトルとURLをコピーしました