RspecでRuntimeError: Circular dependency detected while autoloading constant が出た場合の対処法

こんにちは!kossyです!




さて、今回はRspecでテストを実行する際に、RuntimeError: Circular dependency detected while autoloading constantが出た場合の対処法をブログに残してみたいと思います。




環境
Ruby 2.6.5
Rails 5.1.7
Docker for Desktop



原因

Rspecを複数スレッドで回していると、アプリケーションサーバーとテストのスレッドで同時に同じ定数を参照して読み込もうとすることがあります。
そういった場合、以下のようなエラーが出ることになります。

RuntimeError:
  Circular dependency detected while autoloading constant User

この場合、specファイルの先頭に

require_dependency 'user'

のように、明示的に依存関係を記載することで解決する場合があります。




勉強になりました。