LoginSignup
1
0

More than 1 year has passed since last update.

【Rails】Action Mailerのプレビュー時に発生したエラーの解決方法

Posted at

環境

OS: macOS Bir Sur
Ruby: 3.1.2
Rials: 7.0.3.1
rspec-rails: 5.1.2

発生した問題

Railsチュートリアルの11章を進めていた際、Action Mailerのプレビューコードを実装後に「http://localhost:3000/rails/mailers/user_mailer/account_activation」を確認した際に「Unknown action Mailer preview 'user_mailer/account_activation' not found」というエラーが発生した。

原因と解決方法

原因はテストをデフォルトで使用されるminitestではなく、RSpecに変更したこと。
「rails generate mailer コントローラ名 アクション名」を実行した際に、デフォルトでは、test/mailers/previews/コントローラ名_preview.rbファイルが作成されるが、testファイル以下を削除していたせいか、またはRSpecを導入したことで、「spec/mailers/previews/user_mailer_preview.rb」に上記ファイルが作成された。

Railsガイドでは、

これらのプレビュー用クラスは、デフォルトでtest/mailers/previews
に配置されます。このパスはpreview_path
オプションで設定できます。たとえばlib/mailer_previews
に変更したい場合はconfig/application.rb
に以下の設定を追加します。

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

と説明されていました。

https://railsguides.jp/action_mailer_basics.html#メールのプレビュー

説明通りに下記のように、プレビュー用クラスの配置を以下のように設定したところ問題は解決しました。

spec/mailers/previews/user_mailer_preview.rb
require_relative "boot"

require "rails/all"

Bundler.require(*Rails.groups)

module SampleApp
  class Application < Rails::Application
    config.load_defaults 7.0

    config.action_mailer.preview_path = "#{Rails.root}/spec/mailers/previews" #追加

  end
end

参考記事

Action Mailer の基礎

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0