rbenv vs RVM: Ruby バージョンの管理
rbenv は軽量な shim ベースの Ruby バージョン切り替えツール。RVM はより重く、gemset とシェル統合を同梱します。
rbenv は1つのことだけを行います - shim と .ruby-version ファイルでプロジェクトごとに Ruby バージョンを選択し、gem や build の懸念は ruby-build のようなプラグインに委ねます。RVM はより包括的で、cd コマンドを上書きし、gemset を管理し、幅広いシェル統合を提供します。rbenv は小さく予測可能なフットプリントで好まれ、RVM は複雑さと引き換えに多くの機能を組み込みで提供します。
| rbenv | RVM | |
|---|---|---|
| アプローチ | shim、ミニマル | シェル関数、フル機能 |
| gemset | プラグイン経由 (Bundler) | 組み込み |
| フットプリント | 軽量 | より重い |
| 設定ファイル | .ruby-version | .ruby-version / .rvmrc |
| 最適な用途 | ミニマル、組み合わせ可能 | オールインワン機能 |
CI では
rbenv は CI でシンプルかつ予測可能で、ruby-build がインストールを、Bundler が分離を担います。RVM も動作しますが、そのシェルの上書きは非対話的な runner で扱いにくいことがあります。多くのパイプラインは代わりに setup-ruby を使います。ローカルのパリティでは rbenv がより軽く、RVM がより機能豊富な選択肢です。
高速化
.ruby-version と Gemfile.lock をキーに、build 済みの Ruby と gem の cache を保存しましょう。どちらも CI runner 上で動作し、より高速なマネージド runner は Ruby の build と bundle install の手順を短縮します。
結論
Bundler とうまく協調するミニマルで組み合わせやすい Ruby 切り替えツールがほしいなら rbenv。組み込みの gemset と幅広いシェル統合を1つのツールでほしいなら RVM。モダンなチームはシンプルさから rbenv(または chruby)に傾き、RVM は古いセットアップで依然一般的です。