rbenv は、Unix 系システム上の Ruby プログラミング言語のバージョン管理ツールです。これは、同じマシン上の複数の Ruby バージョンを切り替える場合や、作業中の各プロジェクトが常に正しい Ruby バージョンで実行されるようにする場合に役立ちます。
インストール時に rbenv が自身を PATH に挿入した後、 ruby
、 gem
、 bundler
、またはその他の Ruby 関連の実行可能ファイルを呼び出すと、最初に rbenv がアクティブになります。次に、rbenv は現在のプロジェクト ディレクトリをスキャンして.ruby-version
という名前のファイルを探します。見つかった場合、そのファイルによって、そのディレクトリ内で使用する Ruby のバージョンが決定されます。最後に、rbenv は~/.rbenv/versions/
にインストールされている Ruby バージョンの中からその Ruby バージョンを検索します。
たとえば次のようにして、プロジェクトの Ruby バージョンを選択できます。
cd myproject
# choose Ruby version 3.1.2:
rbenv local 3.1.2
これにより、選択したバージョンで現在のディレクトリに.ruby-version
ファイルが作成または更新されます。別のディレクトリにある別のプロジェクトでは、まったく異なるバージョンの Ruby が使用されている可能性があります。プロジェクトを切り替えると、rbenv はある Ruby バージョンから別のバージョンにシームレスに移行します。
最後に、rbenv のメカニズムのほぼすべての側面は、bash で書かれたプラグインを介してカスタマイズ可能です。
rbenv のシンプルさには利点もありますが、欠点もいくつかあります。詳細といくつかの代替手段については、バージョン マネージャーの比較を参照してください。
Homebrew パッケージ マネージャーを備えたシステムでは、「パッケージ マネージャーを使用する」方法をお勧めします。他のシステムでは、「Basic Git Checkout」が常に最新バージョンの rbenv を確実にインストールする最も簡単な方法である可能性があります。
次のいずれかの方法を使用して rbenv をインストールします。
macOS または Linux では、Homebrew を使用して rbenv をインストールすることをお勧めします。
brew install rbenv
[!注意]
公式 Debian および Ubuntu リポジトリにパッケージ化および保守されている rbenv のバージョンは古くなっています。最新バージョンをインストールするには、git を使用して rbenv をインストールすることをお勧めします。
sudo apt install rbenv
Archlinux には rbenv 用の AUR パッケージがあり、この wiki ページの手順に従って AUR からインストールできます。
Fedora には、インストールできる公式パッケージがあります。
sudo dnf install rbenv
rbenv をロードするようにシェルを設定します。
rbenv init
ターミナル ウィンドウを閉じて新しいウィンドウを開き、変更を有効にします。
それでおしまい!これで、Ruby のいくつかのバージョンをインストールする準備ができました。
注記
より自動化されたインストールには、rbenv-installer を使用できます。 Web URL からダウンロードしたスクリプトを実行したくない場合、または単に手動によるアプローチを希望する場合は、以下の手順に従ってください。
これにより、システム全体のインストールを必要とせずに、rbenv の最新バージョンを使用できるようになります。
rbenv を~/.rbenv
にクローンします。
git clone https://github.com/rbenv/rbenv.git ~ /.rbenv
rbenv をロードするようにシェルを設定します。
~ /.rbenv/bin/rbenv init
興味がある場合は、 init
何をするのかを理解するためにここを参照してください。
これらの変更を有効にするためにシェルを再起動します。 (通常は、新しいターミナル タブを開くとこれが行われます。)
rbenv を手動でインストールする場合、さまざまなシェルの完了スクリプトがどのように機能するかに注目すると役立つ場合があります。補完スクリプトは、部分的に入力された rbenv コマンド名とオプション フラグを展開することで、rbenv コマンドの入力を支援します。通常、これは対話型シェルでTabキーを押すことによって呼び出されます。
rbenv のbash補完スクリプトはプロジェクトに同梱されており、 rbenv init
メカニズムによってロードされます。
zsh完了スクリプトはプロジェクトに同梱されていますが、シェルによって検出される前に、zsh の FPATH に追加する必要があります。これを行う 1 つの方法は、 ~/.zshrc
を編集することです。
# assuming that rbenv was installed to `~/.rbenv`
FPATH= ~ /.rbenv/completions: " $FPATH "
autoload -U compinit
compinit
rbenv のFish補完スクリプトは Fish Shell 自体に同梱されており、rbenv プロジェクトによって保守されません。
rbenv install
コマンドは、そのままの状態で rbenv に同梱されていませんが、ruby-build プラグインによって提供されます。
Ruby をインストールする前に、ビルド環境に必要なツールとライブラリがあることを確認してください。それから:
# list latest stable versions:
rbenv install -l
# list all local versions:
rbenv install -L
# install a Ruby version:
rbenv install 3.1.2
BUILD FAILED
シナリオのトラブルシューティングについては、ruby-build Discussions セクションを確認してください。
注記
rbenv install
コマンドが見つからない場合は、ruby-build をプラグインとしてインストールできます。
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Ruby のバージョンを設定してインストールを完了し、Ruby の使用を開始します。
rbenv global 3.1.2 # set the default Ruby version for this machine
# or:
rbenv local 3.1.2 # set the Ruby version for this directory
rbenv install
コマンドの代わりに、Ruby を~/.rbenv/versions
のサブディレクトリとして手動でダウンロードしてコンパイルすることもできます。そのディレクトリ内のエントリは、ファイルシステム上の別の場所にインストールされている Ruby バージョンへのシンボリックリンクにすることもできます。
たとえば、 rbenv local 3.1.2
使用して、プロジェクトの Ruby バージョンを選択します。次に、通常どおり gem のインストールに進みます。
gem install bundler
注記
gem のインストールにsudo を使用しないでください。通常、Ruby バージョンはホーム ディレクトリにインストールされるため、ユーザーが書き込み可能になります。 gem のインストール時に「書き込み権限がありません」というエラーが発生した場合は、「システム」Ruby バージョンがまだグローバル デフォルトのままである可能性があります。これをrbenv global <version>
に変更して、再試行してください。
gem env
を使用して gem がインストールされている場所を確認します。
gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
時間の経過とともに、インストールした Ruby のバージョンは~/.rbenv/versions
ディレクトリに蓄積されます。
古い Ruby バージョンを削除するには、削除したいバージョンのディレクトリにrm -rf
実行するだけです。 rbenv prefix
コマンド (例: rbenv prefix 2.7.0
を使用して、特定の Ruby バージョンのディレクトリを見つけることができます。
Ruby-build プラグインは、削除プロセスを自動化するrbenv uninstall
コマンドを提供します。
知っておく必要がある主な rbenv コマンドは次のとおりです。
rbenv で認識されているすべての Ruby バージョンをリストし、現在アクティブなバージョンの横にアスタリスクを表示します。
$ rbenv versions
1.8.7-p352
1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
jruby-1.7.1
rbx-1.2.4
ree-1.8.7-2011.03
現在アクティブな Ruby バージョンとその設定方法に関する情報が表示されます。
$ rbenv version
1.9.3-p327 (set by /Users/sam/.rbenv/version)
現在のディレクトリの.ruby-version
ファイルにバージョン名を書き込むことで、ローカル アプリケーション固有の Ruby バージョンを設定します。このバージョンはグローバル バージョンをオーバーライドし、 RBENV_VERSION
環境変数を設定するか、 rbenv shell
コマンドを使用してそれ自体をオーバーライドできます。
rbenv local 3.1.2
バージョン番号を指定せずに実行すると、 rbenv local
現在設定されているローカル バージョンを報告します。ローカル バージョンの設定を解除することもできます。
rbenv local --unset
~/.rbenv/version
ファイルにバージョン名を書き込むことで、すべてのシェルで使用される Ruby のグローバル バージョンを設定します。このバージョンは、アプリケーション固有の.ruby-version
ファイル、またはRBENV_VERSION
環境変数を設定することによってオーバーライドできます。
rbenv global 3.1.2
特別なバージョン名system
、rbenv に Ruby システム ( $PATH
検索することで検出されます) を使用するように指示します。
バージョン番号を指定せずに実行すると、 rbenv global
現在設定されているグローバル バージョンを報告します。
シェルでRBENV_VERSION
環境変数を設定することにより、シェル固有の Ruby バージョンを設定します。このバージョンは、アプリケーション固有のバージョンとグローバル バージョンをオーバーライドします。
rbenv shell jruby-1.7.1
バージョン番号を指定せずに実行すると、 rbenv shell
RBENV_VERSION
の現在の値を報告します。シェルのバージョンの設定を解除することもできます。
rbenv shell --unset
このコマンドを使用するには、rbenv のシェル統合を有効にする必要があることに注意してください (インストール手順のステップ 3)。シェル統合を使用したくない場合は、単にRBENV_VERSION
変数を自分で設定することもできます。
export RBENV_VERSION=jruby-1.7.1
rbenv に認識されているすべての Ruby 実行可能ファイルの shim をインストールします ( ~/.rbenv/versions/*/bin/*
)。このコマンドは gem のインストール後に自動的に実行されるため、通常は実行する必要はありません。
rbenv rehash
指定されたコマンドを実行するときに rbenv が呼び出す実行可能ファイルへのフルパスを表示します。
$ rbenv which irb
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
指定された実行可能ファイル名を含むすべての Ruby バージョンをリストします。
$ rbenv whence rackup
1.9.3-p327
jruby-1.7.1
ree-1.8.7-2011.03
次の設定を使用すると、rbenv の動作に影響を与えることができます。
名前 | デフォルト | 説明 |
---|---|---|
RBENV_VERSION | 使用するRubyのバージョンを指定します。rbenv shell も参照してください | |
RBENV_ROOT | ~/.rbenv | Ruby のバージョンと shim が存在するディレクトリを定義します。rbenv root も参照してください |
RBENV_DEBUG | デバッグ情報を出力します。 としても: rbenv --debug <subcommand> | |
RBENV_HOOK_PATH | ウィキを参照 | rbenv フックを検索するパスのコロン区切りのリスト。 |
RBENV_DIR | $PWD | .ruby-version ファイルの検索を開始するディレクトリ。 |
rbenv init
rbenv をシェルにブートストラップするためのヘルパー コマンドです。このヘルパーは推奨されるインストール手順の一部ですが、上級ユーザーは次のタスクを手動で設定できるため、オプションです。コマンドの起動時に出力がシェルによってeval
された場合のコマンドの動作は次のとおりです。
必要に応じて、 rbenv
実行可能ファイルを PATH に追加します。
~/.rbenv/shims
ディレクトリを PATH の先頭に追加します。基本的に、これが rbenv が適切に機能するための唯一の要件です。
rbenv コマンド用の bash シェル補完をインストールします。
rbenv シムを再生成します。この手順によりシェルの起動が遅くなる場合は、 --no-rehash
フラグを指定してrbenv init -
呼び出すことができます。
「sh」ディスパッチャをインストールします。このビットもオプションですが、rbenv とプラグインが現在のシェルの変数を変更できるようになり、 rbenv shell
ようなコマンドが可能になります。
rbenv init -
生成されたスクリプトを自分で検査できます。
rbenv はシンプルなので、一時的に無効にしたり、システムからアンインストールしたりするのが簡単です。
Ruby バージョンの rbenv 管理を無効にするには、シェルの起動設定からrbenv init
行をコメント化するか削除します。これにより、rbenv shims ディレクトリが PATH から削除され、 ruby
などの今後の呼び出しではシステムの Ruby バージョンが実行され、rbenv が完全にバイパスされます。
無効になっている間も、 rbenv
コマンド ラインからアクセスできますが、Ruby アプリはバージョンの切り替えの影響を受けません。
rbenv を完全にアンインストールするには、手順 (1) を実行してから、rbenv ルート ディレクトリを削除します。これにより、 `rbenv root`/versions/
にインストールされていたすべての Ruby バージョンが削除されます。
rm -rf "$(rbenv root)"
パッケージ マネージャーを使用して rbenv をインストールした場合は、最後のステップとして rbenv パッケージの削除を実行します。
brew uninstall rbenv
sudo apt purge rbenv
sudo pacman -R rbenv
テストは Bat を使用して実行されます。
$ bats test
$ bats test/<file>.bats
お気軽にプル リクエストを送信し、問題トラッカーにバグを報告してください。