LoginSignup
3
0

More than 1 year has passed since last update.

Ruby3.1を触ってみる(error_highlight)

Posted at

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 を拝見しながら触ってみます

sample_1.rb
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 でエラー箇所を見やすい形で紹介しました。
今回の動作確認する上で使用したコードは以下で公開しておきます!

2_error_highlight

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0