« モンスター | トップページ | 久しぶりにビールを飲んだ »

2011年2月 9日 (水)

複数バージョンのRubyをRVMで管理する

RubyそろそろRails3にも触れておきたいし、Rails3ならいっそのことRubyも1.9系に上げておきたい。
でも、メインで使ってるのはまだRails2.3系で、Rubyも1.8.7。言語もフレームワークも同時にバージョンを上げるのはリスキー…というほどRailsもRubyも使ってはいないんだけど、緩やかに移行した方がトラブルが少ないのも事実。

となると、Rails3とRails2の開発環境を準備して、必要に応じて切り替えるのが常套手段に思える。
Rails3はRuby1.9.2(と1.8.7)で動作保証されているらしいので、

  • (現環境として)Ruby 1.8.7 + Rails2
  • (新環境として)Ruby 1.9.2 + Rails3
の2つの環境を切り替えるという方針が良さそう。

で、複数バージョンのRubyを管理するにはRVM(Ruby Version Manager)が便利とのこと。
さっそく導入してみた。

環境

Mac OS X 10.6.6

RVMのインストール

RVMはgitのリポジトリからソースをコピー(クローン)してインストールするらしい。

まずはRVM用のディレクトリをホームディレクトリ作成し、移動する。

$ mkdir -p ~/.rvm/src
$ cd ~/.rvm/src
$ rm -rf ./rvm/
gitでソースをクローンしてインストール。
$ git clone --depth 1 git://github.com/wayneeseguin/rvm.git
$ cd rvm
$ ./install
インストールが完了すると.bashrcとか.bash_profileとかに以下を書き加えること、というコメントが出る。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
自分は~/.bash_profileの最後に挿入した。

Ruby 1.8.7のインストール

ターミナルを一旦閉じて、現状のRuby環境の確認。

$ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
$ which ruby
/opt/local/bin/ruby
MacPortsでインストールした1.8.7が/opt/localにあるのが分かる。
これはこのままにしておいて、RVMで新たに1.8.7をインストールする。

RVMでRubyをインストールするには下記コマンドを実行する。

$ rvm install 1.8.7
インストール後、Rubyのバージョンを確認。
$ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
$ which ruby
/opt/local/bin/ruby
変わっていない。以前MacPortsでインストールしたRubyのまま。

実はRVMでインストールしたRubyは、useコマンドを使って、その環境に切り替えるらしい。
さっそく(RVMでインストールした)1.8.7に切り替えてみる。

$ rvm use 1.8.7
Using /Users/foo/.rvm/gems/ruby-1.8.7-p330
$ which ruby
/Users/foo/.rvm/rubies/ruby-1.8.7-p330/bin/ruby
パッチレベルが302から330に上がっているし、インストール先もUserディレクトリ配下になっている。

Ruby 1.9.2のインストール

続いてRuby 1.9.2をインストールする。

$ rvm install 1.9.2
インストール後、1.9.2に切り替えて確認。
$ rvm use 1.9.2
Using /Users/foo/.rvm/gems/ruby-1.9.2-p136
$ which ruby
/Users/foo/.rvm/rubies/ruby-1.9.2-p136/bin/ruby
期待どおりインストールされている。

なお、上記のようにRVMを利用してインストールしたRubyはホームディレクトリ配下にインストールされるので、sudoしなくてイイ。ちょっとだけ便利。

Railsのインストール

RVMでRubyをインストールするとRubyGemsも同時にインストールされる。また、RubyGemsでインストールしたライブラリもそれぞれの環境に個別にインストールされる。なので、各バージョンでgem install railsをしてあげればイイ。

1.8.7環境ではRails 2.3.3をインストールすることにしていたので、

$ rvm use 1.8.7
でRubyのバージョンを切り替えて、とりあえずRailsのバージョンを確認。
$ rails -v
/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
from /opt/local/bin/rails:18
まだインストールされていないので、当然怒られる。
RubyGemsでRails 2.3.3をインストール。
$ gem install rails -v 2.3.3
Fetching: activesupport-2.3.3.gem (100%)
:
Fetching: rails-2.3.3.gem (100%)
Successfully installed activesupport-2.3.3
:
Successfully installed rails-2.3.3
7 gems installed
Installing ri documentation for activesupport-2.3.3...
:
Installing ri documentation for rails-2.3.3...
Installing RDoc documentation for activesupport-2.3.3...
:
Installing RDoc documentation for rails-2.3.3...
確認してみる。
$ rails -v
Rails 2.3.3
オッケーっぽい。

続いてRails 3系の最新版をインストール。

$ rvm use 1.9.2
Using /Users/foo/.rvm/gems/ruby-1.9.2-p136
$ gem install rails
Fetching: activesupport-3.0.3.gem (100%)
:
Fetching: rails-3.0.3.gem (100%)
Successfully installed activesupport-3.0.3
:
Successfully installed rails-3.0.3
23 gems installed
Installing ri documentation for activesupport-3.0.3...
:
Installing ri documentation for rails-3.0.3...
Installing RDoc documentation for
activesupport-3.0.3...
:
Installing RDoc documentation for rails-3.0.3...
$ rails -v
Rails 3.0.3
Rails2は7個のgemだけど、Rails3は23個もgemがインストールされるんですな…。

デフォルト設定

Ruby 1.8.7を通常利用にする場合は下記コマンドを実行するみたい。

$ rvm use 1.8.7 --default

補足

irbもそれぞれのバージョンで動作する。

$ irb -v
irb 0.9.5(05/04/13)
$ rvm use 1.9.2
Using /Users/foo/.rvm/gems/ruby-1.9.2-p136
$ irb -v
irb 0.9.6(09/06/30)

|

« モンスター | トップページ | 久しぶりにビールを飲んだ »

Ruby」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/16742/50816420

この記事へのトラックバック一覧です: 複数バージョンのRubyをRVMで管理する:

« モンスター | トップページ | 久しぶりにビールを飲んだ »