Ruby学習 「プロを目指す人のためのRuby入門」 11章
はじめに
プロを目指す人のためのRuby入門でRubyを学習しています。
大事そうな部分や理解が難しかった部分、忘れそうなことについて学習メモを書きます。
今回は第11章「Rubyのデバッグ技法を身につける」について書いていきます。
記事中のプログラムはirbで動作を確認しました。
バックトレースの読み方
- バックトレースでは最初に例外クラス名、エラーメッセージが出力される
- それ以降にプログラムが実行されてエラーが発生するまでのメソッド呼び出しの順番が新しい順に表示される(厳密にはこの部分をバックトレースという)
よく発生する例外クラスとその原因
- NameError:未定義なローカル変数や定数、privateメソッド等を呼び出した場合に発生
- NoMethodError:存在しないメソッドを呼び出した場合に発生
- TypeError:期待しない型やクラスがメソッドの引数に渡されたときに発生
- ZeroDivisionError:0除算を行った場合に発生
- ArgmentErro:引数の数が違う場合や、期待する値でなかったりした場合に発生
- SystemStackError:システムスタックがあふれた場合に発生(無限ループ発生時等)
- LoadError:requireやloadの実行が失敗した場合に発生
- SyntaxError:構文に間違いがあった場合に発生
- 外部ライブラリやフレームワークで定義された例外クラスが表示される場合もある
- tapメソッドはブロック引数にレシーバをそのまま返すため、tapを使わない場合と同じ結果になる
- tapメソッドをとprint文を組み合わせることでメソッドチェーンをデバッグできる
'abc,def,ghi'.split(',').tap { |word| p word}.join() ["abc", "def", "ghi"] => "abcdefghi"
- Rubyでは標準ライブラリとしてdebugライブラリがあるが、開発の現場ではByebugというgemが使用されることが多い
感想
内容としては一般的なことが多いが、テストコードは今まで書いていなかったので、これからはテストコードを書いてデバッグにかかる時間を短縮させる。
また、有用なgemを探して活用していきたい。
参考文献
この記事は以下の情報を参考にして執筆しました。