letter_opener_webはRailsで開発中のメールをブラウザで見れる便利なgem.
WSL環境やvagrant上での開発などではブラウザでメールが見られるのは非常に便利.
インストール
Gemfileを編集.
開発時のみ入れるように.
gem 'letter_opener_web', :group => :development
インストール
$ bundle install
設定
config/environments/development.rbを編集.
# 以下2行を追加 config.action_mailer.default_url_options = { host: 'localhost:3000' } config.action_mailer.delivery_method = :letter_opener_web
config/routes.rbを編集.
# 以下3行を追加 if Rails.env.development? mount LetterOpenerWeb::Engine, at: "/letter_opener" end
これで
localhost:3000/letter_opener
へブラウザでアクセスするとブラウザ上でメールが確認できます.
試してみる
mailerとcontrollerを適当に作って試してみる.
mailerを作る
$ rails g mailer HelloMailer
挨拶メールを送るだけ.
class HelloMailer < ApplicationMailer default from: "foo@example.com" def greeting to = "bar@example.com" subject = "greeting!" mail(subject: subject, to: to) do |format| format.text end end end
Controllerを作る
$ rails g controller send_mails
indexへアクセスしたらメールを送るようにする.
class SendMailsController < ApplicationController def index HelloMailer.greeting.deliver end end
config/routesも追加.
get '/send_mails', to: 'send_mails#index'
ビューを作る
ないと怒るので.
<!-- app/views/send_mails/index.html.erb --> sent
ここまでで
localhost:3000/send_mails
へアクセスした後に
localhost:3000/letter_opener
へアクセスするとメールが見れた.
これは便利.