rbenvについて
rubyのバージョンを変更をしようとして、忘れていたので、 復習がてら備忘録も書く。
rbenvとは
rbenvはRubyのバージョンを管理するツールです。
rbenvとrbenv-buildのセットでRubyのインストールとバージョン切り替えを担ってくれます。
globalで設定していてもそれぞれのディレクトリごとに変更してくれる。
わざわざ自分で変更しなくても良い(楽!)。
.ruby-version
ファイルがあるディレクトリ以下のディレクトリでは、 .ruby-version
ファイルに記載されているバージョンが適用されます。
- グローバルでは2.7.1に設定してある
~ % ruby -v ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]
- あるディレクトリでは2.7.0
~/example % ruby -v ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
rbenvをインストール
- Homebrewをアップデート。
~ % brew update
~ % brew install rbenv
ruby-build を入れると rbenv install コマンドが使えるようになります。
- rbenvがインストールされたか確認
~ % rbenv --version rbenv 1.1.2 または ~ % rbenv -v rbenv 1.1.2
シェルにrbenvを設定する
このままだとデフォルトでrbenvが使えないので設定する
zshを使用しているので~/.zshrc
に書き込んでいるが、それぞれのシェルに合わせて書き込む
~ % echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc ~ % echo 'eval "$(rbenv init -)"' >> ~/.zshrc
export
は環境変数を定義するコマンド$HOME
はログインユーザのホームディレクトリ:$PATH
は追加するコマンド検索パスの優先順位を高くしたい
コマンド検索パスには優先度があり、echo $PATHで出力された左から優先されるため、
追加するコマンド検索パスの優先度を高くしたい場合、以下のように記述する。
export PATH=追加したいコマンド検索パス:$PATH
「eval」コマンドは、指定した文字列を評価後に連結して、現在のシェルに実行させます。主にシェルスクリプトや環境設定用のファイルで使用します
vim .zshrc
で見てみると下のように書き込まれている。
export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
その後再起動または、以下を実行し設定を反映させる。
~ % source ~/.zshrc
rubyをインストールする
- インストール可能なrubyを確認する(実行時により異なる)
~ % rbenv install --list または ~ % rbenv install -l 1.8.5-p52 1.8.5-p113 ~~~~~~~~~~~~~~~ 2.6.6 2.7.0-dev 2.7.0-preview1 2.7.0-preview2 2.7.0-preview3 2.7.0-rc1 2.7.0-rc2 2.7.0 2.7.1 2.8.0-dev jruby-1.5.6 ~~~~~~~~~~~~~~
現在の安定版は 2.7.2です。
本家では2.7.2が安定版だがrbenvのlistにはない!
ので、2.7.1
をインストール。
~ % rbenv install 2.7.1
- インストールしたrubyのバージョン確認
*は今使用中のバージョン
(versionsで全て、versionで今使用中のバージョン)
~ % rbenv versions * system (set by /Users/owner/.rbenv/version) 2.7.1
~ % rbenv version * system (set by /Users/owner/.rbenv/version)
バージョンの切り替え
切り替えには2パターンあります。
・ローカルな切り替え ・グローバル な切り替え
ローカルな切り替え
プロジェクト(ディレクトリ)ごとに使用するRubyのバージョンを切り替える方法です。
切り替えコマンドを実行することで、カレントディレクトリにRubyのバージョン情報の書かれた .ruby-versionファイルが作成されます。
.ruby-versionファイルがあるディレクトリ以下のディレクトリでは、 .ruby-version ファイルに記載されているバージョンが適用されます。
また、グローバルな切り替えよりも優先度が高いため、プロジェクト(ディレクトリ)ごとに .ruby-version ファイルに記載されているバージョンが適用され、Rubyのバージョンが切り替えられます。
~ % rbenv local 2.7.0
- 確認
~ % ls -a
- .ruby-version が作成されているはずです。内容も確認してみましょう。
~ % less .ruby-version 2.7.0
グローバルな切り替え
パソコンのシステム全体で共通で使用するRubyのバージョンを切り替える方法です。
~/.rbenv/version のファイル内のバージョン情報を書き替えることでバージョンを切り替えています。
ただし、ローカルな切り替えで説明した .ruby-version ファイルがある場合は、 .ruby-version ファイルが優先されるようになっています。
~ % rbenv global 2.7.1
- rubyバージョン確認
~ % ruby -v ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]
インストールの仕方はGithubからも可能。