今年も期限が切れる時期がやって来たので昨年同様に賛助会員の継続申し込みをした。歩いていける距離なので、特別展だけではなく散歩のついでに常設展も見に行きますって感じで。
RubyGems のマスターブランチで Deivid が以下のような変更を出してきたのでマージした。
https://github.com/rubygems/rubygems/pull/3108
内容は読んでもらえればいいのだけど、RubyGems にはプラグインという仕組みがあって、$LOAD_PATH に追加されるパス、例えば lib などの下に rubygems_plugin.rb
というファイルがあれば、それを gem コマンドを起動した時に同時に実行する。
で、この rubygems_plugin.rb
を RubyGems がどう見つけているか、というとインストールされている gem 全てを探索して探している、という富豪的な仕組みになっていて、development な環境で何も考えずにドカドカ bundle install
または gem install
を実行してると100+にはすぐになるので、そりゃ遅いという状態だった。
Deivid が入れた変更は、全部を探索するのではなく、gem install
などが実行される時に rubygems_plugin.rb
というファイルがあったら、それを実行する wrapper を別のフォルダに作り、gem コマンドの起動時には wrapper のフォルダにあるファイルだけを実行するので速いという内容になっている。
ベンチマークも自分の手元で試した限りは二倍くらいに早くなっていてだいぶよかった。次のバージョンのリリースを楽しみにしてください。