Railsに搭載されているAction Mailerという機能でメールを送信することができるのですが、このメールの文面のプレビュー機能がAction Mailer Previewsです
このプレビュー機能をproduction環境でも使えるようにして、非エンジニアの人にも簡単にメールの文面を確認してもらいたいと思って、対応してみたので、そのやり方をまとめてみました
環境
- Ruby 2.4.2
- Ruby on Rails 4.2.8
手順
1. production環境でmailer_previewが閲覧できるように config/application.rb に設定の追加をします
config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews" # production環境でもpreviewが可能にする config.action_mailer.show_previews = true
2. ドメイン名/rails/mailers から管理画面のパス配下の ドメイン名/admin/rails/mailers になるようにします
config/initializers 配下にファイルを作成し、routes.rbへの追加処理を記述します
Rails.application.config.after_initialize do |app| app.routes.prepend do get "admin/rails/mailers" => "rails/mailers#index", internal: true get "admin/rails/mailers/*path" => "rails/mailers#preview", internal: true get "rails/mailers" => redirect('admin/rails/mailers') get "rails/mailers/*path" => redirect('admin/rails/mailers#preview') end end
こちらの記述はrails/railsを参照しました github.com
3. lib/mailer_previews/previews 配下にpreviewのクラスを作成します
y_yagiさんのブログが非常にわかりやすいです
参照:RailsのAction Mailer Previewsについて | 日々雑記
注意点
これでproduction環境で domain/admin/rails/mailers にアクセスするとmailerを閲覧することが可能になりましたが、認証機能はないので、ユーザーも /admin/rails/mailers にアクセスすると閲覧出来てしまいます
そのため、webサーバ(nginx)等で /admin を社内からのみアクセスできないようになど対策する必要があります