Rails3は一時より安定したものの、まだまだバグもあるので頻繁にアップデートが重ねられていくことが予想されます。
アップデートが一段落するまでは、Rails2を使うというのもありですが、できればRails3も使っておきたい…
そんな気持ちでRails2とRails3の両方を使っていたら、気がついたらこのような状態になっていました。
$ gem list *** LOCAL GEMS *** abstract (1.0.0) actionmailer (3.0.3, 3.0.0.rc2, 2.3.8) actionpack (3.0.3, 3.0.0.rc2, 2.3.8) activemodel (3.0.3, 3.0.0.rc2) activerecord (3.0.3, 3.0.0.rc2, 2.3.8) activeresource (3.0.3, 3.0.0.rc2, 2.3.8) activesupport (3.0.3, 3.0.0.rc2, 2.3.8) ...<中略>... rails (3.0.3, 3.0.0.rc2, 2.3.8) railties (3.0.3, 3.0.0.rc2) rake (0.8.7) sqlite3 (1.3.3) sqlite3-ruby (1.3.3) ...
カオス。
Rails3のバージョンが上がるたびに、gemに追加されていくとなるともっと酷くなってしまいます。
なので、rvmのgemsetを使ってRailsを切り替える方法を試してみることにしました。
以下はその方法のメモです。
rvmのインストール
今回の本題ではないので詳しく書きませんが、
RVMの公式ドキュメントや、id:mirakuiさんの記事が参考になります。
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
rvm gemsetの使い方
公式ドキュメントを参考に、gemsetを使ってみます。
rvmの場合、インストールされているruby毎にgemが存在します。
私の環境では、gemsetを使わない場合にはこのような感じ。
$ rvm 1.9.2 $ which gem /home/takuya/.rvm/rubies/ruby-1.9.2-p0/bin/gem $ gem list ... rails (3.0.3, 3.0.0.rc2, 2.3.8) ...
ここではgemsetを使ってRails3.0.3用と、Rails2.3.8用に分けてみます。
gemsetの作成
$ rvm gemset create rails303 rails238 'rails303' gemset created (/home/takuya/.rvm/gems/ruby-1.9.2-p0@rails303) 'rails238' gemset created (/home/takuya/.rvm/gems/ruby-1.9.2-p0@rails238)
gemset createで、新しいgemsetを作成します。
rvmのgemsディレクトリに新たにgemsetが作成されたことがわかります。
gemsetの選択
$ rvm ruby-1.9.2-p0@rails303
または
$ rvm gemset use rails303
とすることでgemsetを選択できます。(rails238も同様)
railsのインストール
それぞれのgemsetで、railsをインストールします。
$ rvm gemset use rails303 $ gem install rails -v 3.0.3
$ rvm gemset use rails238 $ gem install rails -v 2.3.8
確認
$ rvm gemset use rails303; rails --version Rails 3.0.3 $ rvm gemset use rails238; rails --version Rails 2.3.8
正しく設定されていれば、このようになるはずです。
これで、今後Rails3がバージョンアップしても、既存の環境と切り分けながら使えます。