LoginSignup
32
20

More than 3 years have passed since last update.

Rails uninitialized constant エラーの解決へのシンプルなチェックリスト

Last updated at Posted at 2020-09-12

これはなにか

Railsをそれなりにやっているにも関わらず、uninitialized constant error にハマってしまったのでチェックリストをここにまとめておこうと思う。

結論

チェックするべき項目は以下3点である。

  1. ファイル名とclass名が一致しているか?
  2. ファイルpathとmoduleの定義が一致しているか?
  3. Railsにファイルを読み込ませているか?

以下詳細をかいていく。

ファイル名とclass名が一致しているか?

以下のようなclassが存在していたら、ファイル名はqiita_user.rb でないといけない。

class QiitaUser
  def hoge
  end
end

ファイルpathとmoduleの定義が一致しているか?

以下のようなmoduleにnestされたclassが存在していたら、pathは **/v1/auth/user.rb のようになるだろう。


class V1::Auth::User
end

OR


module V1
  module Auth
    class User
    end
  end
end

Railsにファイルを読み込ませているか?

Railsのデフォルトのフォルダ以外に、フォルダを追加する場合、autoload pathに追加したフォルダへのpathを定義する必要がある。
app/lib/hoge/foo.rb を追加したとする。この場合、config/application.rb に以下の様な形で、autoload pathを追加する必要がある。

module App
  class Application < Rails::Application
    # 省略

    config.autoload_paths += Dir.glob("#{config.root}/app/lib")
  end
end

twitterもフォローよろしくおねがいします。 !

32
20
0

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
32
20