Yuuuuuuukaプログラミング学習記

どんな些細なことでも細かくアウトプット

パッと見て分かるRubyのエラーメッセージの内容と対処法のまとめ

この記事は、フィヨルドブートキャンプ Part 2 Advent Calendar 2023 - Adventarの22日目の記事です。

Part1はこちらからフィヨルドブートキャンプ Part 1 Advent Calendar 2023 - Adventar

Part2の21日目は、siso255さんのVimをちゃんと使い始めて半年経った - sisonohaでした。

はじめに

こんにちは。フィヨルドブートキャンプ(以下、FBCと記載)でプログラミング学習中のYu-kaです😊 私は今年の4月からFBCに入会した完全初心者で、Railsプログラマを目指して勉強中です。

少しずつRubyの学習を進めている上でとにかく出る度重なるエラー、そして指摘内容が全て英語で読めないエラーメッセージ。 これらはいつも私の心を焦らせます💦

頑張って書いたコードも、エラーになると少しテンションが下がり、それが続くと段々やる気が削がれていってしまいます…。

少しでもエラーが出たときの心の負担を減らしたい!と思い、疲れているときでもパッと見てどんなエラーなのかわかりやすいようにまとめてみました!

よく出るエラーメッセージの内容と対処法

ざっくりとした内容と対処法についてをまとめてみました。

ArgumentError(引数の数が合わないよ)

`test': wrong number of arguments (given 0, expected 1) (ArgumentError)

メソッドを呼び出す時に必要な引数の数が間違っているというエラー。 ちなみに本文の「wrong number of arguments (given 0, expected 1)」は、「expected(期待した引数の数)は1個だけど、given(実際に来た引数の数)は0個だったよ」と言っています。

【対処法】 引数が足りない or 多すぎる ので正しい引数の数にしよう。

NoMethodError(そんなメソッドはないよ)

undefined method `apu' for main:Object (NoMethodError)

存在しないメソッドを使ったりメソッド名を打ち間違えた時に出るエラー。 ちなみにメソッド呼び出しの形式でないときは「NameError」と表示されます。

【対処法】 正しいメソッド名に直そう。またはそのメソッドをちゃんと定義しよう。 このエラーは下記のように間違いの箇所を教えてくれるので修正箇所がわかりやすいですね!

# ①存在しないメソッドを打った場合
cherry.rb:1:in `<main>': undefined method `apu' for main:Object (NoMethodError)

apu "aaa"  
^^^
#↑この部分、こんなメソッドはないよと教えてくれている。

# ②もしかしてこのメソッドかも? と候補を出してくれる場合
cherry.rb:1:in `<main>': undefined method `put' for main:Object (NoMethodError)
Did you mean?  puts
               putc

Syntax Error(構文が間違ってるよ)

syntax error, unexpected end-of-input (SyntaxError)

endをenddと書いてしまった、カッコを閉じるのを忘れた、もしくは文の構成が間違っているというエラー。

【対処法】 対象のタイプミス or 構文間違いを直そう。

TypeError(そのデータ型じゃないよ)

no implicit conversion of String into Integer (TypeError)

数値を期待したのに文字列が渡された場合など、期待されるデータ型とは違うデータ型のオブジェクトだったときのエラー。

【対処法】 正しいデータ型に直そう。 例えば、上記のエラー文の場合は文字列を数値にするとOKです。

NameError(そんな変数はないよ)

undefined local variable or method `bar' for main:Object (NameError)

存在しないローカル変数や定数を使用したとき or 変数名を打ち間違えたときに起こるエラー。タイプミスのときが多い気がします。 ちなみにメソッド呼び出しの形式で書かれている場合は「NoMethodError」になります。

【対処法】 タイプミスの場合は正しい変数名に直そう。 またはその変数を定義しよう。

LoadError(ファイルが読み込めないよ)

`require': cannot load such file -- this/file/does/not/exist (LoadError)

requireやloadでファイルを読み込むときに、対象のファイルが見つからない or 正しく読み込めない場合に起こるエラー。 または、使いたいgemがインストールされていないときにもエラーとなります。

エラーメッセージ早見表

もっと早く確認できるように表にまとめてみました。

Rubyエラーメッセージの早見表

おわりに

こうしてまとめてみるとエラーメッセージの種類ってそんなに多くないんだな〜と少し安心しました。これからもRubyの学習頑張っていきます❤️‍🔥