たろすの技術メモ

Jot Down the Tech

ソフトウェアエンジニアのメモ書き

letter_openerを導入する

gemを追加

group :development do
  # 略
  gem 'letter_opener'
  gem 'letter_opener_web'
  # 略
end

インストール

$ bundle install

ルーティングを設定

# config/routes.rb
mount LetterOpenerWeb::Engine, at: '/letter_opener' if Rails.env.development?

Letter Opener Webのエンジン(エンジンとは、Railsアプリケーションと同様に動作するRailsコンポーネントで、その中に自身のMVCコンポーネントやルーティングを持つことができます)を、/letter_openerというパスでマウント(接続)しています。

環境設定

# config/environments/development.rb
config.action_mailer.delivery_method = :letter_opener_web

この設定はRailsのActionMailerでメールを送信する方法をletter_opener_webに設定しています。

letter_opener_webRuby on Railsの開発環境で使用するためのgemです。このgemを使うと、開発中に生成されたメールをブラウザで確認することができます。これは、実際にメールを送信せずにメールの内容やレイアウトを確認するためのツールとなります。

通常、実際のメールを送信する場合は、SMTPサーバーなどを設定します。しかし、開発環境ではメールを実際に送信するのではなく、生成されたメールの内容を確認したいことが多いです。そのような場合に、letter_opener_webを使うと便利です。

この設定は通常、config/environments/development.rbのような環境設定ファイルに書かれます。こうすることで、開発環境でのみletter_opener_webが使われ、本番環境では実際のメール送信方法(SMTPなど)が使われるように設定することができます。

任意の場所にデバッグ用リンクを追加

- if Rails.env.development?
  # = link_to "メール", '/letter_opener', target: '_blank'
  # 2023/07/06更新
  # 新しいタブまたはウィンドウでリンクを開くときに rel='noopener' を指定することを推奨しています。rel='noopener' を指定すると、新しいタブやウィンドウが元のページにアクセスするのを防ぐことができ、セキュリティ上の問題を防ぐことができるようです。
  = link_to "メール", '/letter_opener', target: '_blank', rel: 'noopener'

サーバーを再起動して/letter_openerにアクセスする。