2021/06/04 今週の気になった bugs.ruby のチケット

今週は backtrace に情報を追加する提案がありました。

[Misc #17932] 90s design (please lets move to 21st century)

  • バグトラッカーを古いデザインから新しいデザインにしようぜ!っていうチケット
  • github へディスカッションを移動しようぜ!みたいな内容
  • この人が言うには bugs.ruby の検索が壊れているらしいが、結局一時的におかしくなっていただけで現状は問題ないっぽい
  • 現状は ruby/b.r-l.o の方で議論するようにコメントされてチケット自体や Reject されている
  • これとは関係ないが bugs.rubyruby/rubygithub と各 bundled gem のリポジトリのどこで議論するのか分からん問題があるので、そのあたりをルール化してほしい気持ちは無きにしもあらず

[Feature #17930] Add column information into error backtrace

  • backtrace にエラー位置情報を追加する提案
  • 具体的には以下のような情報を追加するイメージ
    • Thread::BacktraceLocation#first_lineno
    • Thread::BacktraceLocation#first_column
    • Thread::BacktraceLocation#last_lineno
    • Thread::BacktraceLocation#last_column
  • こういう情報を追加することで以下のように『エラー箇所を明示化できる』ようにできるユースケースが提示されている
$ ruby -r ./sample/no_method_error_ext.rb err1.rb
err1.rb:2:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)

data["data"].first["field"]
                  ^^^^^^^^^
  • undefined method `[]' for nil:NilClass (NoMethodError) だけだとどこでエラーになっているのかわからないのでこれは便利そう
    • datanil なのか data["data"].firstnil なのかがわからない

[Bug #17889] Enumerator::Lazy#with_index should return size

  • Enumerator::Lazy#with_index の戻り値に対して size を呼ぶと意図しない値が返ってきたというバグ報告
p Enumerator::Lazy.new([1, 2, 3], 3){|y, v| y << v}.with_index.size
# 期待する値 => 3
# 実際の値   => nil