Rails4.1の新機能Action Mailer Previewsとは

Rails 4.1 の新機能 - rochefort's blog を書いたときはスルーしていましたが
Ruby on Rails 4.1 Release Notes #2(Rails4.1の主な機能) - rochefort's blog でrelase notes見たら
便利そうだったので試してみました。

試してみます

Action Mailer、Modelなどを生成

$ rails generate mailer Notifier
      create  app/mailers/notifier.rb
      invoke  erb
      create    app/views/notifier
      invoke  test_unit
      create    test/mailers/notifier_test.rb
      create    test/mailers/previews/notifier_preview.rb

最後のところ!
test/mailers/previews/notifier_preview.rb
へんなのが出来ています。きっとこれです。
 
テスト用にモデルを準備します。

$ rails g model User name email
$ rake db:migrate
$ rails c
User.create({name:'test', email:'test@example.com'})

ソース修正

# models/users.rb
class User < ActiveRecord::Base

  def email_address_with_name
    "\"#{name}\" <#{email}>"
  end
end
# views/notifier/welcome.text.erb
Hi <%= @account.name %>,
Thanks for joining our service! Please check back often.
# mailers/notifer.rb
class Notifier < ActionMailer::Base
  default from: 'no-reply@example.com',
          return_path: 'system@example.com'

  def welcome(recipient)
    @account = recipient
    mail(to: recipient.email_address_with_name,
         bcc: ["bcc@example.com", "Order Watcher <watcher@example.com>"])
  end
end

なんということでしょう!

http://localhost:3000/rails/mailers から
http://localhost:3000/rails/mailers/notifier/welcome へ辿って行くと
mailのpreviewが見れます。

f:id:rochefort:20140115130823p:plain

ああ、こら便利だわ。

補足

previewファイルの場所は、default testに置かれていますが

config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"

で変更可能なようです。