Rubyでuninitialized constantエラーを解消する方法を現役エンジニアが解説【初心者向け】
初心者向けにRubyでuninitialized constantエラーを解消する方法について現役エンジニアが解説しています。uninitialized constantエラーとは、Railsで定数やclassが定義されていないエラーです。クラス名や定数の記述ミスや呼出方法のミスが考えられます。
TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。
Rubyでuninitialized constantエラーを解消する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

今回は、Rubyに関する内容だね!

どういう内容でしょうか?

Rubyでuninitialized constantエラーを解消する方法について詳しく説明していくね!

お願いします!
目次
uninitialized constantエラーが起きる原因
uninitialized constant errorは直訳すると「初期化されていない定数のエラー」という意味ですが、Railsでは「定数やclassが定義されていない」ことを意味しています。uninitialized constantは名前が間違っているという意味のNameErrorです。
これはファイル名の記述間違いなどで、呼びたいクラス名を記述出来ていない場合などで発生します。また、利用したいライブラリを使用できるようにしていないことも原因となる場合があります。
Rubyのライブラリには、組み込みライブラリとその他のライブラリが存在します。組み込みライブラリは、Ruby本体にもともと組み込まれており、この中のクラスはすぐに使用することが出来ます。
しかし、その他のライブラリはrequireコマンドで指示をすることで使用することが出来るようになります。このrequireコマンドを記述が漏れている場合にuninitialized constantのエラーが発生する場合があります。
[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中
uninitialized constantエラーの解消法
まずはクラス名の記述ミスが無いことが前提となります。
クラス名を間違えている場合は、クラスとして使用が出来ないのに呼び出そうとしていることになります。
そして、組み込みライブラリ以外のライブラリ(クラスなど)を使用する場合には、requireコマンドを用いてライブラリを利用できるようにします。
実際に解消してみよう
今回はランダムに乱数を発生させるライブラリのsecurerandomを使用していきます。
(test.rb)
p SecureRandom.hex(3)
この記述で実行をするとエラーとなってしまいます。
(エラー結果)
test.rb:1:in `<main>': uninitialized constant SecureRandom (NameError)
このtest.rbファイルの1行目にrequireを加筆します。
(test.rb)
require 'securerandom' p SecureRandom.hex(3)
このように記述をするとエラーとならず、乱数が返されます。
まとめ
記述ミスや呼出方法のミスなど、エラーの内容によって解決方法が変わります。
uninitialized constantのNameError以外にもSyntaxErrorやArgumentErrorなど様々なものがありますが、まず何のエラーかを把握し、一つずつ解決していくことが重要です。
筆者プロフィール
木村勇土
TechAcademyの現役メンター。 現在は行政書士事務所を運営しており、お客様にはプログラマーやフリーランサーも多い。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。