bundle exec rails zeitwerk:check が undefined method 'preview_path=' エラーで失敗する場合、rspec-rails のバージョンが古い可能性があるfixture_path を fixture_paths に変更することで解決するRails 8.0.4 環境で bundle exec rails zeitwerk:check を実行したところ、以下のエラーが発生しました。
NoMethodError: undefined method `preview_path=' for ActionMailer::Base:Class
Did you mean? preview_paths=rspec-rails 6.0.x が、Rails 7.1 で非推奨となった ActionMailer::Base.preview_path= メソッドを内部で使用していました。Rails 8 ではこのメソッドが完全に削除されたため、エラーが発生します。
Rails のアップグレード時に rspec-rails のバージョンアップが漏れていたことが根本原因でした。
# 変更前
gem "rspec-rails", "~> 6.0.0"
# 変更後
gem "rspec-rails", "~> 8.0"bundle update rspec-railsrspec-rails 8.x では fixture_path も fixture_paths(複数形)に変更されています。
# 変更前
config.fixture_path = Rails.root.join('spec/fixtures').to_s
# 変更後
config.fixture_paths = [Rails.root.join('spec/fixtures').to_s]Rails のメジャーアップグレード時は、テスト関連の gem も合わせて更新することをおすすめします。bundle outdated コマンドで古い gem を確認できます。
rspec-rails のバージョンと Rails の対応関係は以下の通りです。
| rspec-rails | 対応 Rails |
|---|---|
| 6.0.x | Rails 7.0 |
| 6.1.x | Rails 7.1 |
| 7.x | Rails 7.2 |
| 8.x | Rails 8.0 |




色の名前のページが良い。

GitHub をデータソースにする CMS とのこと。気になる。






このシリーズが全部面白い。