Rubyのバージョン管理:rbenv・miseの使い方と切り替え方法
はじめに
Rubyを使っていると、こんな場面が出てきます。
- プロジェクトAはRuby 3.1、プロジェクトBはRuby 3.3を使っている
- チームの誰かの環境だけ動かない
- 新しいRubyを試したいが、今の環境を壊したくない
バージョン管理ツールを使えば、プロジェクトごとにRubyのバージョンを自動で切り替えられます。この記事ではよく使われる rbenv と、最近人気の mise の使い方を解説します。
rbenvとmiseの違い
| rbenv | mise | |
|---|---|---|
| 特徴 | Ruby専用のバージョン管理ツール | Ruby以外の言語も管理できる |
| 歴史 | 長く、情報が豊富 | 比較的新しい(旧rtx) |
| 対応言語 | Ruby | Ruby、Node.js、Python、Goなど |
| 設定ファイル | .ruby-version |
.mise.toml または .ruby-version |
単一言語なら rbenv、複数言語を一元管理したいなら mise がおすすめです。
rbenvを使う
インストール
Mac(Homebrew)
brew install rbenv ruby-build
シェルの設定ファイルに以下を追加します。
# ~/.zshrc eval "$(rbenv init - zsh)"
設定を反映します。
source ~/.zshrc
インストール確認
rbenv --version
rbenv 1.3.0
Rubyをインストールする
インストール可能なバージョンを確認します。
rbenv install --list
特定のバージョンをインストールします。
rbenv install 3.3.0
バージョンを切り替える
グローバル(デフォルト)のバージョンを設定する
rbenv global 3.3.0
プロジェクト単位でバージョンを設定する
プロジェクトのディレクトリで以下を実行します。
rbenv local 3.3.0
.ruby-version ファイルが作成され、そのディレクトリ以下では自動的に指定したバージョンが使われます。
cat .ruby-version # 3.3.0
現在のバージョンを確認する
rbenv version
3.3.0 (set by /path/to/project/.ruby-version)
miseを使う
インストール
Mac(Homebrew)
brew install mise
シェルの設定ファイルに以下を追加します。
# ~/.zshrc eval "$(mise activate zsh)"
設定を反映します。
source ~/.zshrc
インストール確認
mise --version
Rubyをインストールする
インストール可能なバージョンを確認します。
mise ls-remote ruby
特定のバージョンをインストールします。
mise install ruby@3.3.0
バージョンを切り替える
グローバルのバージョンを設定する
mise use --global ruby@3.3.0
プロジェクト単位でバージョンを設定する
プロジェクトのディレクトリで以下を実行します。
mise use ruby@3.3.0
.mise.toml ファイルが作成されます。
[tools] ruby = "3.3.0"
miseは .ruby-version ファイルも読み込むため、rbenvで管理されていたプロジェクトでもそのまま使えます。
現在のバージョンを確認する
mise current ruby
ruby 3.3.0
プロジェクトに参加したときの流れ
rbenvまたはmiseを使っているプロジェクトをクローンした場合、.ruby-version または .mise.toml に記載されたバージョンが必要です。
# クローン後 git clone https://github.com/example/project cd project # .ruby-versionを確認 cat .ruby-version # 3.2.2 # 該当バージョンをインストール(rbenvの場合) rbenv install 3.2.2 # または mise の場合 mise install
mise install は設定ファイルを読んで必要なバージョンを自動でインストールしてくれます。
まとめ
| 操作 | rbenv | mise |
|---|---|---|
| インストール | brew install rbenv ruby-build |
brew install mise |
| Rubyインストール | rbenv install 3.3.0 |
mise install ruby@3.3.0 |
| グローバル設定 | rbenv global 3.3.0 |
mise use --global ruby@3.3.0 |
| プロジェクト設定 | rbenv local 3.3.0 |
mise use ruby@3.3.0 |
| 現在のバージョン確認 | rbenv version |
mise current ruby |
- rbenvはRuby専用で情報が豊富。Rubyしか使わないなら十分
- miseはNode.js・Python・Goなど複数言語をまとめて管理できる
- どちらも
.ruby-versionファイルに対応しているので既存プロジェクトとの互換性あり - バージョン確認の方法は「RubyとRailsのバージョン確認方法」を参照
- ディレクトリごとに環境変数を自動で切り替えるには「direnv入門:ディレクトリごとに環境変数を自動で切り替える」を参照