ActiveStorageを導入してテスト実行した際に`undefined method ‘name’ for nil:NilClass`が出た時の対応

概要
みなさん。テストは書けてるでしょうか?
今回はActiveStorageを導入してテストを実行した際に、全然心当たりのないundefined method 'name' for nil:NilClass
が出た際のTIPSです。
結論から言うと、config/envinronments/test.rb
に設定が漏れていたのが原因でした。
binding.pry
で結構深くまで掘らないと気づけなかったですが、超単純なミスでorz状態です。
目次
- 環境
- 解決方法
- 原因
- まとめ
環境
- rails 6.0.1
- rspec-rails 4.0.1
- activestorage 6.0.1
解決方法
- config/environments/test.rb
config.active_storage.service = :test
たったこれだけ。こちらの設定を有効化するだけです。もともとコメントアウトされています。
原因
- activestorage-6.1.0/app/models/active_storage/blob.rb:52
after_initialize do
self.service_name ||= self.class.service.name
end
こちらの処理でself.class.service
がnilとなってしまい、nameが呼び出せずエラーとなっていました。
serviceがないってところで、そういえばconfigがあったなと思い解決策の設定を思い出しました…(もっと早く気付けよ…)
まとめ
設定ミスしている自分が悪いんですが、エラーメッセージから対応方法が全然わからず時間がかかりました。もうすこし早くraiseしてくれると嬉しいな…
あまりこんなミスする方はいないと思いますが、誰かの助けになれば幸いです。