Rails 8 アップグレード後に zeitwerk:check が失敗する場合の対処法
- Rails 8 で
bundle exec rails zeitwerk:checkがundefined method 'preview_path='エラーで失敗する場合、rspec-rails のバージョンが古い可能性がある - rspec-rails 6.0.x は Rails 7.1 で非推奨となった API を使用しており、Rails 8 では動作しない
- rspec-rails を 8.x にアップグレードし、
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 のバージョンアップが漏れていたことが根本原因でした。
解決方法
1. Gemfile を更新
# 変更前
gem "rspec-rails", "~> 6.0.0"
# 変更後
gem "rspec-rails", "~> 8.0"2. bundle update を実行
bundle update rspec-rails3. spec/rails_helper.rb を修正
rspec-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 |
参考リンク
- rspec-rails Issue #2703 - Rails 7.1 upgrade: using deprecated preview_path=
- Rails Issue #49754 - Rendering action mailer preview raises deprecation warning
X のブックマークしたサイトを整理する
2026元日、Playwright MCPに触れて気づいた、LLM時代のブラウザ自動化の新しいパラダイム
2026元日、Playwright MCPに触れて気づいた、LLM時代のブラウザ自動化の新しいパラダイム
zenn.dev

MoonBit の宣言 UI ライブラリ Luna を使ってみる
MoonBit の宣言 UI ライブラリ Luna を使ってみる
Luna は MoonBit と JavaScript を使用して Web アプリケーションのユーザーインターフェースを構築するための宣言型 UI ライブラリです。この記事では、Luna UI と MoonBit を使用してシンプルなカウンターアプリケーションを作成する方法を紹介します。
azukiazusa.dev

Indie Hackers
ReactはuseEffectで副作用があるのに、なぜ純関数と言えるのか?
ReactはuseEffectで副作用があるのに、なぜ純関数と言えるのか?
zenn.dev

キャラ名とかハンドルネームとか考えるのに参考になりそうなサイト
キャラ名とかハンドルネームとか考えるのに参考になりそうなサイト
ここは管理人がハンドルネームやらグループ名やら、何かの名前を考える時に参考になればなぁと集めた単語やら何やらです。ありとあらゆるネーミングの参考にどうぞ。
name-site.net
色の名前のページが良い。
8億人が使うChatGPTを支えるPostgreSQLのスケーリング戦略
8億人が使うChatGPTを支えるPostgreSQLのスケーリング戦略
zenn.dev

pitcms | はがしやすい日本製ヘッドレスCMS
pitcms | はがしやすい日本製ヘッドレスCMS
pitcmsはコンテンツをあなたのGitHubに保存するヘッドレスCMSです。ベンダーロックインなし、プレビュー機能、レビュー機能、複数環境管理をビルトインで提供します。
pitcms.net

GitHub をデータソースにする CMS とのこと。気になる。
Claude Code でAIにコードを書かせてAIにレビューさせる
Claude Code でAIにコードを書かせてAIにレビューさせる
zenn.dev

知っているようで知らないCLAUDE.mdを深掘りする
知っているようで知らないCLAUDE.mdを深掘りする | gihyo.jp
今回は知っているようで知らない、Claude Codeの「CLAUDE.md」について深掘っていきます。
gihyo.jp

Claude CodeのSubagentとcontext: forkは何が違うのか
Claude CodeのSubagentとcontext: forkは何が違うのか - 5.1さらうどん
Claude Code機能多すぎ問題 2週間ほど前、会社のブログに「LINE iOSアプリ開発を高速化するClaude Code基盤の設計思想」という記事を書いた。 この記事では、ビルド実行のようなタスクをSubagentに分離し、高度な操作をSkillsで隠蔽する方法を紹介している。 --- name: module-builder description: Build specific modules for the app tools: Bash, Read, Grep, Glob skills: creating-xcode-build-scheme --- <!-- Subagent…
giginet.hateblo.jp
ドキュメントからはじめる未来のソフトウェア
ドキュメントからはじめる未来のソフトウェア
speakerdeck.com

BPO×AIの知見から考える「人間がレビューしない率」の上げ方
BPO×AIの知見から考える「人間がレビューしない率」の上げ方
zenn.dev

Claude Codeで「AI部下10人」を作ったら、勝手にバグ直して「違反は切腹」ルールを追加してきて、オレは適当にしゃべるだけになった
Claude Codeで「AI部下10人」を作ったら、勝手にバグ直して「違反は切腹」ルールを追加してきて、オレは適当にしゃべるだけになった
zenn.dev

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