📧

Railsで開発環境に gem letter_opener_web を導入しメール本文をコンソールで確認するのをやめよう

2020/12/14に公開

TL;DR

主に gem devise でメール送信するときにコンソールで確認するのはダルい

Rails でメール送信の仕組みを導入するといえば
gem devise でのメール有効性確認やロック解除の仕組みの部分かと思います。

devise をチュートリアルに則ってセットアップしていくと、
メール送信した内容の確認はコンソールに出るからそれ使ってね、となりますよね。

Devise::Mailer#confirmation_instructions: processed outbound mail in 74.0ms
Delivered mail 5fd6e5ce263a7_2a054f4c375aa@81c033451ad2.mail (516.5ms)
Date: Mon, 14 Dec 2020 04:10:54 +0000
From: please-change-me-at-config-initializers-devise@example.com
Reply-To: please-change-me-at-config-initializers-devise@example.com
To: hoge@hoge.jp
Message-ID: <5fd6e5ce263a7_2a054f4c375aa@81c033451ad2.mail>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<p>Welcome hoge@hoge.jp!</p>

<p>You can confirm your account email through the link below:</p>

<p><a href="http://localhost:3000/registrations/confirmation?confirmation_token=BqjAMrfCb5nse9Loq7c9">Confirm my account</a></p>

  Rendering user/registrations/create.html.erb within layouts/application
  Rendered user/registrations/create.html.erb within layouts/application (Duration: 7.0ms | Allocations: 98)
Completed 200 OK in 1872ms (Views: 19.0ms | ActiveRecord: 196.9ms | Allocations: 34615)

こんな感じ。
しかしこれはクッソダルいしコンソールは流れる物なので掘り返すのが面倒だし
ちょっと目を離した隙に「アレッどこだっけ」となります。

そこで助けてくれるのが
gem letter_opener_web です。
https://github.com/fgrehm/letter_opener_web

使ってみる

導入は簡単で上記 GitHub リポジトリの README.md にあるように

Gemfile の group :development に追記して bundle install

group :development do
  gem 'letter_opener_web'
end

あとは config/routes.rb に以下を追記

Rails.application.routes.draw do
  ## 開発環境用letter_opener
  mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
end

これで、例えば localhost:3000 でRailsへのリクエストを待ち受けているなら
localhost:3000/letter_opener にアクセスすることでメーラーのように確認できます。

上記のコンソールで確認するのに比べれば100倍みやすいし使いやすくなりましたね。

参考

Discussion