開催後だいたい2周目に突入して顔ぶれが変わった感があったので、今回は Rails コミッターにまつわる話をしてもらったりしていた。
ここでは、少し横道にそれて Ruby 2.5 の機能についての話を書き残しておく。
Ruby 2.4.1 と Ruby 2.5.0dev で、以下のようにバックトレースの表示が変わる。
対象のソースコード
cat /tmp/a.rb
の結果。
def foo; bar; end def bar; raise 'hi'; end foo
Ruby 2.4.1 での実行結果
% ruby -v ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin13] % ruby /tmp/a.rb /tmp/a.rb:2:in `bar': hi (RuntimeError) from /tmp/a.rb:1:in `foo' from /tmp/a.rb:4:in `<main>'
Ruby 2.5.0dev での実行結果
% ruby -v ruby 2.5.0dev (2017-07-24 trunk 59413) [x86_64-darwin13] % ruby /tmp/a.rb Traceback (most recent call last): 2: from /tmp/a.rb:4:in `<main>' 1: from /tmp/a.rb:1:in `foo' /tmp/a.rb:2:in `bar': hi (RuntimeError)
例外の発生順が付与されて、バックトレースの出力順が逆になっていることが確認できる。
これにより例外元を見るためスクリーンを上に辿る必要がなくなるという点はメリットとしてあり、余談ながら Python と同じ出力結果になるらしい (このあたりは良く知らないので風聞) 。
一方で RSpec のバックトレースが追随してくるかどうかという点や、この表示順がこれまでの Ruby ユーザーに優しくなるのかどうかが分からないためフィードバックは募集されているとのこと。