概要

マルチスレッド環境でautoloadされるモジュールにアクセスしようとしたら以下のようなエラーが出た

Circular dependency detected while autoloading constant Lib::MyConstant

解決する方法がないか調べたのでメモ

原因

定数のautoloadingはスレッドセーフではないらしい
マルチスレッド環境下での「RuntimeError: Circular dependency detected while autoloading constant xxxx」を解消した話

解決方法

マルチスレッドで使う前に一度ロードしておくとよい
速度的に支障がなければ Rails 起動時に eager load してしまってもよいかも

config.eager_load_paths << Rails.root.join('lib')