write ahead log

ロールフォワード用

letter_opener_webを使ってメール送信をプレビューする

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

これで

http://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

へアクセスするとメールが見れた.

これは便利.