【Rails】app/以下に新規作成したディレクトリのファイルが読み込まれない件
結論:springの再起動が必要だった
あらまし
Ruby On Railsアプリケーションの開発中、app/
以下に新しくvalidators
というディレクトリを作ることになった。
最近のRailsではapp
以下のファイルを自動で読み込んでくれるようになっているので、追加の設定は不要だ。
Railsガイドにも次のように書かれている。
ところで、Railsにはpost.rbのようなファイルを探索する$LOAD_PATHに似た、ディレクトリのコレクションがあります。このコレクションはautoload_pathsと呼ばれており、デフォルトで以下が含まれます。
アプリケーションとエンジンのappディレクトリ以下にあるすべてのサブディレクトリ。app/controllersなどが対象。app以下に置かれるapp/workersなどのカスタムディレクトリはすべてautoload_pathsに自動的に属するので、デフォルトのディレクトリとする必要はない。
※ https://railsguides.jp/autoloading_and_reloading_constants.html#autoload-paths
そう、そのはずなのだが何故か読み込まれない。
bin/rails c
でコンソールを立ち上げて、$LOAD_PATH
やActiveSupport::Dependencies.autoload_paths
を確認してもやはりapp/validators
は含まれていない。
1時間くらいハマッて調べた結果、springがキャッシュを持っていることが原因だとわかった。
bin/spring stop
上のコマンドでspringを停止し、その後 bin/rails c
でコンソールを立ち上げて確認したところ無事に読み込まれていた。
springは裏でひっそりと動くのであまり気にしなくて良い反面、存在自体を忘れがちである。