前回の記事でRailsにdeviseでメール認証を使ったパスワード再設定を実装しました。 RailsのAction Mailerを使って送信したメールの内容をletter_opener_webというgemで確認できるようなので使い方を調べました。
結論
下記手順でletter_opener_web gemを導入し、設定を追加すればメール送信の内容を確認できる。
- インストール
- ルーティング追加
- Action Mailerの
delivery_method
の設定 - 送信メールの内容を確認
letter_opener_webとは?
Railsの送信済みメールをweb上で閲覧できるgem。
fgrehm/letter_opener_web: A web interface for browsing Ruby on Rails sent emails
導入すると次のメリットがあります。
- 自前でメールアドレスを用意しなくて良い。
- ブラウザ上でメール送信の内容確認ができるので楽。
- Action Mailerの設定が少ないので楽。
1. インストール
今回は下記のRailsアプリに実際にletter_opener_web gem導入します。
karlley/fjord-books_app at my-user_page
Gemfile
に追記後、bundle install
でインストールします。
# Gemfile group :development do ... # 下記を追加 gem 'letter_opener_web' ... end
注意点としてローカル環境でのみ当gemを使用するのでdevelopment
環境にのみインストールします。
2. ルーティング追加
config/routes.rb
にletter opener web用のルーティングを追加します。
# config/routes.rb Rails.application.routes.draw do # 下記を追加 mount LetterOpenerWeb::Engine, at: '/letter_opener' if Rails.env.development? # 既存のルーティング root 'books#index' devise_for :users, controllers: { registrations: 'users/registrations' } resources :users, only: %i[index show] resources :books # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
3. Action Mailerのdelivery_method
の設定
config/environments/development.rb
にActionMailerのdelivery_method
の設定を追加します。
# config/environments/development.rb require 'active_support/core_ext/integer/time' Rails.application.configure do ... # Default url for mailer config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } # 下記を追加 config.action_mailer.delivery_method = :letter_opener_web end
letter_opener_web gemの設定は以上で完了です。
4. 送信メールの内容を確認
rails s
でサーバを起動しhttp://localhost:3000/letter_opener/
にアクセスし、下記のようなページが表示されればgemの設定はokです。
devise gemでのパスワード再設定をメール認証で行う際のメールは以下のように確認できました。
まとめ
自前で用意したメールアドレスを使った動作確認よりも全然簡単だったので最初からこちらの方法を選択すれば良かったとちょっと後悔しました😅 こちらのgemは現場でも良く使われるようなのでしっかり使い方を覚えておこうと思います。
参照
fgrehm/letter_opener_web: A web interface for browsing Ruby on Rails sent emails
【Rails】letter_opener_webを用いて開発環境で送信したメールを確認する方法|TechTechMedia