rbenv で新しいバージョンの ruby を入れたときの備忘録

2014年1月8日追記:
検索で辿り着いた方へ
以下の情報は古くなっているので別の情報をお探しください。
追記ここまで。

Ruby のバージョン を 1.9.3-p125 から 1.9.3-p194 に上げようとしたときにどうやるか理解していなかったので、備忘録代わりにメモ。OS は Lion 。

% rbenv install 1.9.3-p194
ruby-build: definition not found: 1.9.3-p194

と出たので、 rbenv install でインストール可能なバージョンを確認する。

% rbenv install
usage: rbenv install VERSION
       rbenv install /path/to/definition

Available versions:
  1.8.6-p383
  1.8.6-p420
...
  1.9.3-p0
  1.9.3-p125
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  jruby-1.6.3
...

当然 1.9.3-p194 はない。rbenv rehash をやってみたけど、さすがにネットワークから取得してくれたりはしなかった。ruby-build の定義情報はどうやって更新されるのかなと思ったのだが、

  • ruby-build 自体に ビルド方法の定義を更新するオプションやサブコマンドはない
  • ruby-build 自体を Homebrew などで入れ直す必要がある

ということらしい。

自分の ruby-build のバージョンは、2012年2月16日のものだった。

% ruby-build
ruby-build 20120216
usage: ruby-build [-v|--verbose] definition prefix
       ruby-build --definitions

brew install --HEAD ruby-build で ruby-build を入れ直す。 事前準備として brew unlink が必要。

% brew install --HEAD ruby-build
Error: ruby-build-20120216 already installed
To install this version, first `brew unlink ruby-build'
% brew unlink ruby-build
Unlinking /usr/local/Cellar/ruby-build/20120216... 3 links removed
% brew install --HEAD ruby-build
==> Cloning https://github.com/sstephenson/ruby-build.git
Cloning into '/Library/Caches/Homebrew/ruby-build--git'...
remote: Counting objects: 55, done.
remote: Compressing objects: 100% (46/46), done.
remote: Total 55 (delta 27), reused 29 (delta 8)
Unpacking objects: 100% (55/55), done.
==> ./install.sh
/usr/local/Cellar/ruby-build/HEAD: 45 files, 196K, built in 6 seconds

というわけで 1.9.3-p194 のインストール。

% rbenv install 1.9.3-p194      
Downloading http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz...
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/username/.rbenv/versions/1.9.3-p194
Downloading http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz...
Installing ruby-1.9.3-p194...
Installed ruby-1.9.3-p194 to /Users/username/.rbenv/versions/1.9.3-p194
% rbenv global 1.9.3-p194

ちなみに、rbenv install した直後は rbenv rehash は不要。bundle コマンドを叩くと ruby のバージョンが違うと怒られたので、Bundler も入れ直し(これでは ruby のバージョンを切り替えられるメリットが少ない気が)。Bundler がどうやって ruby のバージョンを参照しているかすぐにはわからなかったのですが、知っていたらぜひ教えてください。

% sudo gem install bundler