LoginSignup
67

More than 5 years have passed since last update.

uninitialized constantのエラーをどう解決すべきか

Last updated at Posted at 2018-08-08

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エラーが起きる

解決策

  1. ファイル名とファイルパス、ファイル中のクラス名を確認する
  2. それでも解決しない場合は、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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
67