Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【脳のリソース不足のあなたに】生Rubyのエラー(例外クラス)と良くある原因

More than 1 year has passed since last update.

はじめに

元気なときは大丈夫!ちゃんとエラー文を読み解いて自己解決出来る!

でも、頭が疲れて脳がリソース不足になっているとき、ついテキトーにググって時間を浪費してしまっていませんか?

そんな疲れたあなたのために、「原因はこれじゃない?」とあたりをつけられるよう良くある原因を問いかけ形式でまとめました。

※Rails ではなく、生Rubyでのエラーを記載しています。

この記事が役立つ方

  • エラー発生時にあたりをつけず
  • 手当り次第にググってしまう
  • Ruby初心者

この記事のメリット

  • Rubyのデバッグ効率UP!

よく発生する例外クラス一覧

  • SyntaxError
  • NameError
  • NoMethodError
  • TypeError
  • ArgumentError
  • SystemStackError
  • LoadError

それぞれの良くある原因

SyntaxError

  • endの過不足はありませんか?
  • ,の過不足はありませんか?
  • (){}の過不足はありませんか?

- ハッシュの{}がブロックの{}と間違えて解釈されていませんか?

NameError

  • 単純なタイプミスはないですか?
  • 以下が未定義なのに呼び出されていませんか?
    • ローカル変数
    • 定数
    • privateメソッド
  • require忘れ(外部ファイル・ライブラリ)はありませんか?

NoMethodError

  • 単純なタイプミスはないですか?
  • レシーバの想定していた型と異なっていませんか?
    • ex.文字列を想定していたのにシンボルになっていた
  • レシーバが想定に反してnilになっていませんか?

TypeError

  • 違う型同士の演算をしようとしていませんか?

ArgumentError

  • 引数が過剰していませんか?
  • 引数が不足していませんか?
  • 引数の正負が間違っていませんか?

SystemStackError

  • 無限ループ
    • 間違ってメソッドを再帰呼び出ししていませんか?

LoadError

  • requireloadの実行に失敗していませんか?
    • 呼び出したいファイルのパス誤り(もしくはライブラリ名)はありませんか?
  • gemは実行環境にインストール出来てますか?

おわりに

自分が脳のリソース不足のときについ手当り次第ググってしまうクセがあったので、反省してまとめました。

実際はここで出てきた表面的な方法では解決出来ないことも多いですが、まずは応急処置として確認はするべきですね。

まずググる、の前に範囲を絞ってから解決するクセをつけます。
誰かの辞書代わりにもなれば幸いです。

参考にさせて頂いた書籍(いつもありがとうございます)

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

terufumi1122
ストックついでに「いいね!」もしてもらえると嬉しいです。 HTML/CSS/JavaScript/Vue.js/Ruby/Ruby on Rails/Java/Kotlin/Android
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away