目次
rbenv
rbenvはRubyの複数バージョンを管理するツール。
rbenv は ~/.rbenv/shims をPATHに追加して ruby コマンドを ~/.rbenv/shims/ruby に置き換える。この ruby コマンドの実体はシェルスクリプトで rbenv で選択したバージョンの ruby を呼び出している。
Rubyのインストール
rbenv自体にはRubyをインストール機能がない。自前でビルドしても良いが ruby-build というプラグインを入れるのが普通。
ruby-buildをインストールするとinstall/uninstallサブコマンドが使えるようになる。
インストール可能なRubyのバージョン一覧
$ rbenv install --list
2.0.0-p0をインストール
$ rbenv install 2.0.0-p0
MacOSXの場合XCodeに付属のgcc(llvm-gcc)ではRubyをビルドできない事がある。homebrewでgccをインストールしてビルド時に指定すると良い
$ brew install gcc48 $ CC=/usr/local/bin/gcc-4.8 rbenv install 1.8.7-p249
X11/Xlib.hが無いと言われる場合はCPPFLAGSでヘッダファイルの場所を指定
$ CC=/usr/local/bin/gcc-4.8 CPPFLAGS=I/usr/X11/include rbenv install 1.8.7-p249
2.0.0-p0ではopensslを独自にビルドするのでopensslを別途インストール不要。ただしbrewでインストールしたものを指定したい場合は、
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl)" rbenv install 2.0.0-p0
Rubyのバージョンを指定する方法
いくつかバージョンを指定する方法がある。
shell 指定
shell設定を行うと、現在のシェルセッションで使うRubyを指定できる。この設定は最も優先度が高い。
$ rbenv shell 2.0.0-p2
この指定は、Redmine等のRubyで書かれたアプリを本番環境でデーモンとして起動するために起動スクリプト中で使うと良いだろう。
この設定は環境変数RBENV_VERSIONに保存される。逆にRBENV_VERSION環境変数をsystemdのserviceファイル等で設定することで、サービスでrbenvを使うことができる
local 指定
local設定を行うと、この設定を行ったディレクトリ以下にいるとき指定したバージョンのRubyが使用されるようになる。優先度は2番目。
$ rbenv local 1.9.3-p194 $ ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin10.8.0]
この指定はRubyアプリ開発時に使用するRubyのバージョンを固定するために使う。プロジェクトのトップディレクトリで設定しよう。
この設定は .rbenv-version というファイルに記録される。プロジェクトでRubyのバージョンを統一するために、このファイルをGit等のバージョン管理システムにコミットしてもよい。
global 指定
local の設定が見つからない場合は、global の設定が使われる。優先度は最も低い。
$ rbenv global 2.0.0-p0
普段使いたいRubyのバージョンを指定すると良い。
global 設定は ~/.rbenv/version に記録される(RBENV_ROOT環境変数が設定されている場合は $RBENV_ROOR/version)
現在の指定を確認
rbenv versionコマンドを実行
$ rbenv version 2.1.0 (set by /Users/nullpon/hoge/fuga/piyo/.ruby-version)
“(set by カレントディレクトリ/.ruby-version)” の場合はlocalで指定されている
$ rbenv version 2.1.0 (set by /Users/nullpon/.rbenv/version)
“(set by ホームディレクトリ/.rbenv/version)” の場合はglobalで指定されている
$ rbenv version 2.0.0-p0 (set by RBENV_VERSION environment variable)
“RBENV_VERSION environment variable” はshellで指定されている。shell指定はターミナル環境で使うべきではない。
インストール済みRubyを確認する
rbenv versions コマンドを実行
$ rbenv versions system 1.8.7-p249 1.8.7-p371 1.9.3-p392 2.0.0-p0 * 2.1.0 (set by /Users/nullpon/.rbenv/version)
最新版のRubyがインストールできない場合
新しいrubyリリースされた後、その最新版がインストール対象にない場合はrbenvを更新する。
$ cd ~/.rbenv $ git pull $ cd ~/.rbenv/plugins/ruby-build $ git pull
rbenvをhomebrew等のパッケージ管理ツールでインストールした場合は、そちらで更新する。