TokyuRuby会議11でLTをした

伝統の地域 Ruby 会議となる TokyuRuby 会議11 で LT をしてきた。 スタッフのみなさん、サントリーのみなさんありがとうございました。

https://tokyurubykaigi.github.io/tokyu11/

発表内容としては一昨日くらいに降りてきた『天使の助言と悪魔の囁き』の狭間で戦う人間の葛藤というストーリーで、端的にいうと『アジャイルプラクティス』へのオマージュ作品だった。

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

話の展開として、いちプログラマーとしての人間の葛藤の話から、最後に葛藤に打ち勝った場合の光の世界線を話して良い話でまとめるという流れだったけれど、ダークサイドとの葛藤のターンで時間切れになって光の世界の話まで届かなかったのだった。精進が必要。

その当日のスライドは以下。

www.slideshare.net

発表前の接続確認では Rabbit をフルスクリーンにしたらうまく動かないあたりを、yancya さんに以下の起動オプションを教えてもらって助かったりしていた。

% rabbit -w 1920 -h 1080

結果として TokyuRuby 会議で5位をもらえていたようなので、気持ちの引き締まる思いで来週末のぎんざ Ruby 会議01のスポンサー LT に望むのであった (つづく) 。

Rails (OSS) パッチ会

開催後だいたい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 ユーザーに優しくなるのかどうかが分からないためフィードバックは募集されているとのこと。