RubyGemsを最新版にしたら、それ以降インストールしたCLIツールがうまく動かない。どうもv2.3.0から生成するバッチファイルで指定されているRubyの実行ファイルのパスが変更になったことが原因みたい。v2.5.0で修正が入るようなので、それまでWindowsではその変更が入る前のv2.2.2かインストーラー付属のバージョンを使うのが良さそう。

v2.3.0から%~dp0ruby.exeを使うようになっているので、RubyGemsが生成するバッチファイルと同じフォルダーにruby.exeが無いとエラーになる。RubyGemsはWindowsでは何も設定しないとruby.exeと同じフォルダーにCLIツールがインストールされるので、その場合は特に問題にはならない。しかしBundler経由であったりGEM_HOME環境変数でユーザー・フォルダー配下を指定していたりすると、当然同じフォルダーにruby.exeは無いので、操作可能なプログラムまたは~というおなじみのエラーで停止する。


僕は本気でRuby書くことはまずないので、RubyGemsを更新することはあまりない。けど、最近色んなツールのキャッシュの場所を~/.cache/に移動したくなる病にかかり、その関係で更新してハマった。RubyGemsではv2.1.0からGEM_SPEC_CACHE環境変数でキャッシュを置くパスを指定できるようになってて、手元のバージョンはv2.0.14だったのでちょっと足りなかった。