rbenv で Ruby環境構築

昨年(2017-04-25)の記録が残っていたのでまとめておく

 

前提

  • ログインシェルは zsh
  • Xcodeコマンドラインツールがインストールされてること
  • Homebrew がインストールされてること

 

はじめる前に

Rubyバージョンを確認しておく

$ ruby -v

(記録時では 2.0.0)

 

(念のため) Homebrew に rbenv と ruby-build があるか確認しておく

$ brew search rbenv

$ brew search ruby-build 

 

rbenv + ruby-build のインストール

$ brew install 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

 

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:

     - https://rubygems.org/

 

次に 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:

     - https://rubygems.org/

  - 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 を利用するのが安全か?