RVM
GitHub概要
スター5,174
ウォッチ160
フォーク1,029
作成日:2009年8月24日
言語:Shell
ライセンス:Other
トピックス
jrubymri-rubymrubyrbxrubiniusrubyruby-environmentruby-versionsrvmtruffleruby
スター履歴
データ取得日時: 2025/7/20 02:56
言語バージョン管理ツール
RVM(Ruby Version Manager)
概要
RVMは、Rubyの複数バージョンとgemsetを管理する最も歴史あるバージョン管理ツールです。gemsetによる完全な依存関係の分離、複数のRuby実装のサポート、豊富な機能セットが特徴です。2009年にWayne E. Seguin氏によって作成され、Rubyエコシステムで最も広く使用されてきました。
詳細
主な特徴
- gemset管理: プロジェクトごとに完全に独立したgem環境を作成
- 複数実装サポート: MRI、JRuby、TruffleRuby、mruby、IronRuby等をサポート
- 自動切り替え: ディレクトリベースの自動Ruby/gemset切り替え
- インストーラー内蔵: Rubyのダウンロードとビルドが統合されている
- 豊富な機能: パッチ適用、依存関係管理、アップグレード機能など
- コマンド補完: bash/zshの高度な補完機能
gemsetシステム
RVMの最大の特徴は「Named Gem Sets」と呼ばれるgemset機能です。各プロジェクトで独立したgem環境を持つことで、依存関係の競合を完全に防ぎます。gemsetは共通のキャッシュディレクトリを使用するため、同じgemの複数コピーを持つ必要がありません。
最新機能(2024年)
- Ruby 3.3.6、3.4.4のサポート
- Ruby 3.5.0-preview1のサポート
- OpenSSL 3.0対応の強化
- macOS ARM(Apple Silicon)の完全サポート
- セキュリティ強化(プロジェクトファイルからのコード実行防止)
- Termux、Void Linux、Deepin等の新しいLinuxディストリビューション対応
メリット・デメリット
メリット
- 完全な分離: gemsetによりプロジェクト間の依存関係が完全に分離
- 多機能: バージョン管理に必要な機能がすべて揃っている
- Ruby実装の多様性: JRuby、TruffleRuby等も簡単に管理
- 成熟したエコシステム: 長い歴史と豊富なドキュメント
- 自動化: .ruby-versionと.ruby-gemsetによる自動切り替え
- チーム開発: 環境設定をファイルで共有可能
デメリット
- 複雑さ: 機能が多すぎて初心者には扱いにくい
- 重い: 起動が遅く、シェルの初期化時間に影響
- 侵入的: cd コマンドのオーバーライドなど、シェル環境への影響大
- メモリ使用: 多くのメタデータを保持するため、メモリ使用量が多い
- Windows非対応: WSL/Cygwinが必要
参考ページ
書き方の例
インストール(Linux/macOS)
# GPGキーのインポート(推奨)
gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
# インストールスクリプトの実行
\curl -sSL https://get.rvm.io | bash -s stable
# RVMの読み込み
source ~/.rvm/scripts/rvm
# インストール確認
rvm --version
type rvm | head -n 1 # "rvm is a function" と表示されるはず
シェル設定(.bashrcまたは.zshrcに追加)
# RVMの自動読み込み設定
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
# PATHの設定(通常は自動で追加される)
export PATH="$PATH:$HOME/.rvm/bin"
基本的な使い方
# 利用可能なRubyバージョンの一覧
rvm list known
# Ruby 3.3.0のインストール
rvm install 3.3.0
# JRubyのインストール
rvm install jruby-9.4.5.0
# TruffleRubyのインストール
rvm install truffleruby
# インストール済みRubyの一覧
rvm list
# デフォルトRubyの設定
rvm use 3.3.0 --default
# 現在のRubyバージョン確認
rvm current
ruby -v
gemset管理
# 新しいgemsetの作成
rvm gemset create myproject
# gemsetの使用
rvm use 3.3.0@myproject
# または一度に指定
rvm use 3.3.0@myproject --create
# gemset一覧の表示
rvm gemset list
# 現在のgemsetの確認
rvm gemset name
# gemsetのコピー
rvm gemset copy 3.3.0@oldproject 3.3.0@newproject
# gemsetの削除
rvm gemset delete myproject
# グローバルgemsetの使用(全gemsetで共有)
rvm use 3.3.0@global
gem install bundler rake
プロジェクトごとの管理
# プロジェクトディレクトリで設定
cd /path/to/myproject
# .ruby-versionファイルの作成
echo "3.3.0" > .ruby-version
# .ruby-gemsetファイルの作成
echo "myproject" > .ruby-gemset
# ディレクトリ移動時に自動切り替え
cd ..
ruby -v # システムRubyまたは別のバージョン
cd myproject
ruby -v # 3.3.0に自動切り替え
rvm gemset name # myprojectが選択されている
高度な使い方
# Rubyインストール時のオプション指定
rvm install 3.3.0 --with-openssl-dir=/usr/local/opt/openssl
# パッチの適用
rvm install 3.2.0 --patch /path/to/patch.diff
# 複数バージョンでのコマンド実行
rvm all do ruby -v
rvm 3.2.0,3.3.0 do bundle install
# gemsetのエクスポート/インポート
rvm gemset export Gemfile.lock.gems
rvm gemset import Gemfile.lock.gems
# Rubyバージョンのアップグレード
rvm upgrade 3.2.0 3.3.0
# RVM自体のアップデート
rvm get stable
gemsetとBundlerの連携
# プロジェクトセットアップ
mkdir myapp && cd myapp
rvm use 3.3.0@myapp --create
# .ruby-versionと.ruby-gemsetをコミット
echo "3.3.0" > .ruby-version
echo "myapp" > .ruby-gemset
git add .ruby-version .ruby-gemset
# Bundlerのインストール
gem install bundler
# Gemfileの作成
bundle init
# 依存関係のインストール(gemset内に隔離)
bundle install
# binstubsの作成(推奨)
bundle binstubs --all
トラブルシューティング
# RVMの再読み込み
rvm reload
# 問題の診断
rvm requirements
rvm doctor
# キャッシュのクリア
rvm cleanup all
# gemsetのリセット
rvm gemset empty myproject
# RVMの完全な再インストール
rvm implode
# その後、再度インストールスクリプトを実行