# 開発日記-2026-02-03 / X のブックマークしたサイトを整理する

## 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` を実行したところ、以下のエラーが発生しました。

```sh
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 を更新

```ruby
# 変更前
gem "rspec-rails", "~> 6.0.0"

# 変更後
gem "rspec-rails", "~> 8.0"
```

#### 2. bundle update を実行

```bash
bundle update rspec-rails
```

#### 3. spec/rails_helper.rb を修正

rspec-rails 8.x では `fixture_path` も `fixture_paths`（複数形）に変更されています。

```ruby
# 変更前
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=](https://github.com/rspec/rspec-rails/issues/2703)
- [Rails Issue #49754 - Rendering action mailer preview raises deprecation warning](https://github.com/rails/rails/issues/49754)

## X のブックマークしたサイトを整理する

### 2026元日、Playwright MCPに触れて気づいた、LLM時代のブラウザ自動化の新しいパラダイム

::link-card[https://zenn.dev/nossa/articles/8d90efd840934f]

### MoonBit の宣言 UI ライブラリ Luna を使ってみる

::link-card[https://azukiazusa.dev/blog/moonbit-declarative-ui-library-luna-ui/]

### Indie Hackers

::link-card[https://www.indiehackers.com/]

### ReactはuseEffectで副作用があるのに、なぜ純関数と言えるのか？

::link-card[https://zenn.dev/expsh13/articles/4a07266a80267c]

### キャラ名とかハンドルネームとか考えるのに参考になりそうなサイト

::link-card[https://name-site.net/]

[色の名前のページ](https://name-site.net/contents/color.php)が良い。

### 8億人が使うChatGPTを支えるPostgreSQLのスケーリング戦略

::link-card[https://zenn.dev/manntera/articles/2ae3edc2aaba9f]

### pitcms | はがしやすい日本製ヘッドレスCMS

::link-card[https://pitcms.net/]

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

### Claude Code でAIにコードを書かせてAIにレビューさせる

::link-card[https://zenn.dev/sora_biz/articles/claude-code-ai-review-workflow]

### 知っているようで知らないCLAUDE.mdを深掘りする

::link-card[https://gihyo.jp/article/2026/01/get-started-claude-code-06]

### Claude CodeのSubagentとcontext: forkは何が違うのか

::link-card[https://giginet.hateblo.jp/entry/2026/01/27/202636]

### ドキュメントからはじめる未来のソフトウェア

::link-card[https://speakerdeck.com/pkshadeck/dokiyumentokarahazimeruwei-lai-nosohutouea]

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

::link-card[https://zenn.dev/tokium_dev/articles/4a46f5a2992fd9]

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

::link-card[https://zenn.dev/shio_shoppaize/articles/5fee11d03a11a1]

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