Rails 7.0.8 で開発中のウェブアプリで,factory_bot_rails のバージョンを 6.2.0 から 6.4.0 に上げたら Rails サーバーも Rails コンソールも動かなくなった。
rails console
とやると以下のようなエラーが出て落ちる。
(略)/railties-7.0.8/lib/rails.rb:47:in `configuration': undefined method `config' for nil:NilClass (NoMethodError)
application.config
そのプロジェクトでは Gemfile で factory_bot_rails のバージョンをガチガチに固定してはおらず,当初は,factory_bot_rails のバージョンが変わったことが引き金になっているとは分からなかった。
認証系 gem の sorcery を使っていたが,いろいろ試しているうち,Gemfile から sorcery を外せばエラーが出なくなることが分かった。
sorcery は開発がやや低調(?)になっていて,Rails 7.0, 7.1 への対応はこれかららしい。
えっ? もしかして Rails 7 で sorcery 動かないの??? と焦ったが,そういうわけではなかった。
結局,現時点(2023-11-20)では,たとえば
gem "factory_bot_rails", "~> 6.2", "< 6.3"
のようにして factory_bot_rails のバージョンを 6.3.0 未満に抑えておけばよい(この不具合は 6.3.0 以上で起こる)。
本件は factory_bot_rails の issue として立てられていた:
https://github.com/thoughtbot/factory_bot_rails/issues/426
そして,既に 修正のプルリクエスト も作られている。ああよかった。
ところで,sorcery の開発の進捗が気になる。
といっても半年ちょっと前に最新版が出ているし,そのあとも動きがあるので開発は止まっていない。
作者さん(感謝)が思うように時間が取れないようだ。現在,追加のメンテナーを募集している:
https://github.com/Sorcery/sorcery/issues/350