rbenv で Ruby環境構築
昨年(2017-04-25)の記録が残っていたのでまとめておく
- 前提
- はじめる前に
- rbenv + ruby-build のインストール
- バージョンを指定して Ruby をインストールする
- 特定のディレクトリにのみ Ruby のバージョン変更を適用する
- (おまけ) そのとき gem は?
前提
はじめる前に
$ ruby -v
(記録時では 2.0.0)
(念のため) Homebrew に rbenv と ruby-build があるか確認しておく
$ brew search rbenv
rbenv + ruby-build のインストール
rbenv をインストールしたら rbenv init してみる
% rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:
eval "$(rbenv init -)"
指示されているとおり ~/.zshrc に eval "$(rbenv init -)" を追記する
バージョンを指定して Ruby をインストールする
インストールできる Ruby バージョンは次のように確認できる
% rbenv install -l
...
2.3.0
2.3.1
2.3.2
2.3.3
2.3.4
2.4.0-dev
2.4.0-preview1
2.4.0-preview2
2.4.0-preview3
2.4.0-rc1
2.4.0
2.4.1
2.5.0-dev
...
この中からインストールするバージョンを選ぶ
(当時は 2.3.3 を選択)
選んだバージョンを指定して rbenv で Ruby をインストール
% rbenv install 2.3.3
インストールされている Ruby のバージョンは次のように確認できる
% rbenv versions
* system (set by /Users/username/.rbenv/version)
2.3.3
「*」がついているものが現在有効になっているバージョン
特定のディレクトリにのみ Ruby のバージョン変更を適用する
ワーキングディレクトリ(今回は ~/working)に移動して Ruby のバージョンを確認
% cd ~/working
% ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
% rbenv version
system (set by /Users/username/.rbenv/version)
% rbenv which ruby
/usr/bin/ruby
% rbenv local 2.3.3
% ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
% rbenv version
2.3.3 (set by /Users/username/working/.ruby-version)
% rbenv which ruby
/Users/username/.rbenv/versions/2.3.3/bin/ruby
% ls -a
. .. .ruby-version
ruby コマンドが切り替わっているのがわる
rbenv local で Ruby バージョンを切り替えた場合、そのディレクトリ配下では指定したバージョンが有効になる
(おまけ) そのとき gem は?
上の手順で ruby は変更されているが gem はどうなっているのか?
まずはホームディレクトリで gem を調べてみる
% gem -v
2.0.14.1
% rbenv which gem
/usr/bin/gem
% gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14.1
- RUBY VERSION: 2.0.0 (2015-12-16 patchlevel 648) [universal.x86_64-darwin16]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-16
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0
- /Users/username/.gem/ruby/2.0.0
- /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
次に Ruby 2.3.3 を適用したワーキングディレクトリで
% gem -v
2.5.2
% rbenv which gem
/Users/username/.rbenv/versions/2.3.3/bin/gem
% gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.5.2
- RUBY VERSION: 2.3.3 (2016-11-21 patchlevel 222) [x86_64-darwin16]
- INSTALLATION DIRECTORY: /Users/username/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0
- USER INSTALLATION DIRECTORY: /Users/username/.gem/ruby/2.3.0
- RUBY EXECUTABLE: /Users/username/.rbenv/versions/2.3.3/bin/ruby
- EXECUTABLE DIRECTORY: /Users/username/.rbenv/versions/2.3.3/bin
- SPEC CACHE DIRECTORY: /Users/username/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/username/.rbenv/versions/2.3.3/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-16
- GEM PATHS:
- /Users/username/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0
- /Users/username/.gem/ruby/2.3.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- SHELL PATH:
- /Users/username/.rbenv/versions/2.3.3/bin
- /usr/local/Cellar/rbenv/1.1.0/libexec
- /Users/username/.rbenv/shims
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /Users/username/bin
gem もちゃんと切り替わっているのがわかる
gem パッケージのインストール先も ~/.rbenv/versions/... になっている
いろいろ調べてみると、rbenv を利用している際の gem インストールは rbenv exec gem install を、bundler は rbenv exec bundle を使用するのがよさそう
上の調査結果を見る限り gem install は rbenv exec を使用していなくてもよさそうだが、システムに同名のコマンドが混在しているとどっちが適用されるか不安があるから rbenv exec を利用するのが安全か?