0. はじめに
前回 に引き続きRuby 3.1の新機能について動かしながら紹介しようと思います。
今回は error_highlight になります
1. リリースノートを見てみる
error_highlightという組み込みgemが導入されました。これにより、バックトレース中でエラーが発生した詳細な位置が表示されます。
このgemはデフォルトで有効になっています。--disable-error_highlightコマンドラインオプションを指定することで無効化できます。詳しくはruby/error_highlightリポジトリを見てください。
引用: https://www.ruby-lang.org/ja/news/2021/12/25/ruby-3-1-0-released/
2. 触ってみる
使い方を README を拝見しながら触ってみます
puts hoge
上記ファイルを実行した結果は以下のようになります。
ここを見るとエラー箇所の位置が表示されるようになりました
$ ruby sample_1.rb
sample_1.rb:1:in `<main>': undefined local variable or method `hoge' for main:Object (NameError)
puts hoge
^^^^
上記と同じファイルを以前のバージョンで実行した場合は以下のような出力になります。
こうして比べてみると違いがはっきり分かるかと思います
$ ruby sample_1.rb
Traceback (most recent call last):
sample_1.rb:1:in `<main>': undefined local variable or method `hoge' for main:Object (NameError)
その他
ただ、どのようなエラーでも位置が表示される訳ではありません
例えば ZeroDivisionError
などは3.1でも位置の表示はまだされないようです。
エラー位置の表示される詳しいエラーについては確認した方が良いと思います!
$ ruby sample_2.rb
sample_2.rb:1:in `/': divided by 0 (ZeroDivisionError)
from sample_2.rb:1:in `<main>'
3. 最後に
今回は error highlight でエラー箇所を見やすい形で紹介しました。
今回の動作確認する上で使用したコードは以下で公開しておきます!