#uninitialized constantとは
uninitialized constantは「定義したクラスを読むことができない」ことを言っている
具体例
NameError in HogeController#index
uninitialized constant HogeController::OutTable
#原因
クラスの読み込みが上手くいっていない。
rubyファイルを実行した時にrails sした直後は実行時点でクラスを読み込んでいないので、app/models/user.rbファイルを探しにいく。
app/models/user.rbというファイルがあれば、ファイルをオープンしてクラスを読み込む
しかし、app/models/user.rbというファイルがない、ファイルの中にUserというクラスが定義されていない場合、uninitializedエラーが起きる
#解決策
- ファイル名とファイルパス、ファイル中のクラス名を確認する
- それでも解決しない場合は、config/initializersディレクトリを利用して、アプリケーション初期化時に読み込めるように定義する
config/initializers/requirements.rb
require Rails.root.join(“app/models/user.rb”)
大いに参考にした文献
https://techacademy.jp/magazine/17957
https://www.sejuku.net/blog/21170