RubyKaigi 2017 2日目

RuboCop の Issue に znz さんが挙げていた内容が興味深かったので、対応した PR について pocke さんに相談したりしていた。

github.com

PR コメントに書いたとおり、当初は $LOADED_FEATURE の値を直接使っていたものを、その結果配列を直接使うようにした。これは pocke さんに相談して指摘してもらった古い Ruby では必要だった require 'thread' が消えてしまうといった可能性に対処したもの (レビュー中の PR でもあるため今後どうなるかは分からない) 。

% rbenv local 2.0.0-p648 && ruby -e 'p $LOADED_FEATURES.reject { |feature| %r|/| =~ feature }'
["enumerator.so"]
% rbenv local 2.1.10 && ruby -e 'p $LOADED_FEATURES.reject { |feature| %r|/| =~ feature }'
["enumerator.so", "thread.rb"]
% rbenv local 2.2.8 && ruby -e 'p $LOADED_FEATURES.reject { |feature| %r|/| =~ feature }'
["enumerator.so", "rational.so", "complex.so", "thread.rb"]
% rbenv local 2.3.5 && ruby -e 'p $LOADED_FEATURES.reject { |feature| %r|/| =~ feature }'
["enumerator.so", "thread.rb", "rational.so", "complex.so"]
% rbenv local 2.4.2 && ruby -e 'p $LOADED_FEATURES.reject { |feature| %r|/| =~ feature }'
["enumerator.so", "thread.rb", "rational.so", "complex.so"]
% rbenv local 2.5.0-dev && ruby -ve 'p $LOADED_FEATURES.reject { |feature| %r|/| =~ feature }'
ruby 2.5.0dev (2017-09-18 trunk 59955) [x86_64-darwin13]
["enumerator.so", "thread.rb", "rational.so", "complex.so"]

この $LOADED_FEATURES に上記の feature はどのようなタイミングで追加されるのかが分かっていないことが分かったので、ESM Drinkup の際に nobu さんに質問したところ Ruby の内部から依存されるようになったら増えることがあるとの話。たとえば rational /complex なんかはそれぞれのリテラルが用意されたこと関係して依存があるなどなるほどだった。

これに絡んで Rails に出していた PR があり 、y-yagi さんや yahonda さんとそのあたりから Rails 方面の話をしたり、amatsuda に fxn からのメンションの進捗を聞いてたりした (こちらは nobu さんにオーダー済みとのこと) 。