2012年3月5日月曜日

rvmで複数のバージョンのRubyとRailsを混在させるまで

Okinawa.rbに参加するべく、色々調べた。
[rvm]というもので、Rubyのバージョンを複数混在できる。
さらにさらに、1つのRubyのバージョンに複数のバージョンのRailsも混在できるらしい。

rvmは既にインストールしていたので、省略。(ログ残しとけば良かったorz)

rubyのバージョンを変えるには
->1.8.7へ
>rvm 1.8.7

->1.9.2へ
>rvm 1.9.2
まぁなんて簡単♪

rvmで管理していない状態に戻すには

>rvm system



楽するために
>rvm --default 1.9.2

完全に元に戻すには
>rvm reset



------------< gemset >
rubyのバージョンが変わると、gemも切り替わってる(※gem env や gem list で違いを確認可能)
しかし、1つのRubyのバージョンには1つのgem環境。
rvmでgemの環境も複数管理できるっぽい
gemsetというもので集合を扱っている。
>rvm 1.9.2
>rvm gemset list

gemsets for ruby-1.9.2-p290 (found in /Users/kanpe777/.rvm/gems/ruby-1.9.2-p290)
   global

しょっぱなではglobalというgemsetがあるだけ
新しいgem環境を作ってみる
>rvm gemset create test
'test' gemset created (/Users/kanpe777/.rvm/gems/ruby-1.9.2-p290@test).

確認
>rvm gemset list

gemsets for ruby-1.9.2-p290 (found in /Users/kanpe777/.rvm/gems/ruby-1.9.2-p290)
   global
   test

消す
>rvm gemset delete test

Are you SURE you wish to remove the entire gemset directory 'test' (/Users/kanpe777/.rvm/gems/ruby-1.9.2-p290@test)?
(anything other than 'yes' will cancel) >

確認してくるので、yesを打ち込み、Enter
複数のRailsのバージョン用のgem環境を作成

>rvm gemset create rails30
>rvm gemset create rails31
>rvm gemset create rails32


gem環境を切り替える

>rvm gemset use rails30

もっと簡単に
>rvm 1.9.2@rails30


確認

>rvm gemset list


   global
=> rails30
   rails31
   rails32



railsのインストール前にsqlite3のインストール

>gem install sqlite3-ruby
>gem install sqlite3


そして、railsの3.0をインストール
バージョンを指定しなければならない

>gem install -v=3.0.5 rails


少し時間がかかる

次にgem環境を変え、rails3.1をインストール
>rvm 1.9.2@rails31


やることは一緒、railsのバージョンが異なるくらい

>gem install sqlite3-ruby
>gem install sqlite3
>gem install -v=3.1.1 rails


似たようなことを1.9.2@rails32にも....これ書いた時の最新railsのバージョンは 3.2.2であった。
終わったら、
>rvm 1.8.7


そして、同じようにgemset createをする
(rvm gemset listするとわかるが、1.8.7に変えるとgemsetの中身も変わっていることが確認できる)
そして同じようなことをすると出来上がり。
今後、rubyの1.8.7でrailsを使わないと判断したので、入れない。
一応入れると以下のようなことが予想される

  • rvm 1.8.7@rails30 -> rails 3.0
  •                @rails31 -> rails 3.1
  •                @rails32 -> rails 3.2
  • rvm 1.9.2@rails30 -> rails 3.0
  •                 @rails31 -> rails 3.1
  •                 @rails32 -> rails 3.2