コレグレーデギネード

WindowsとかUbuntuとかRubyとかRailsとか

RVMでgemsetがglobalに戻ってしまう。

global以外のgemsetを複数管理していて、
例えば「rails3」というgemsetを使いたいなーという場合の切り替えは、

$ rvm gemset use rails3
Using ruby-1.9.3-head with gemset rails3

とすればいいのだが、PCやターミナルを起動するたびにrvm...とコマンドをたたくのはめんどい。しかもプロジェクトごとに違うのでは間違ってしまう場合もある。どうすればいいんだ?と思い、ググって解決方法見つけました。
参考:rvm のgemsetをおさらい(Mac でRuby) - たぐってつづる 謝謝!

プロジェクトのディレクトリ直下に以下の内容で「.rvmrc」というファイルを作成する。

rvm use ruby-1.9.3-head@rails3

これで、プロジェクトのディレクトリに入ると自動でgemsetを切り替えてくれるようになる。

$ cd sampleapp
====================================================================================
= NOTICE                                                                           =
====================================================================================
= RVM has encountered a new or modified .rvmrc file in the current directory       =
= This is a shell script and therefore may contain any shell commands.             =
=                                                                                  =
= Examine the contents of this file carefully to be sure the contents are          =
= safe before trusting it! ( Choose v[iew] below to view the contents )            =
====================================================================================
Do you wish to trust this .rvmrc file? (/home/username/sampleapp/.rvmrc)
y[es], n[o], v[iew], c[ancel]> y
Using ruby-1.9.3-head with gemset rails3

一度NOTICEが表示され、rvmの設定ファイルを読み込むかどうか問われる。
これにより切り替わることが確認できる。

試しに別のgemsetを用意。
Gemset名 rails2r187
Rubyバージョン1.8.7-head
Railsバージョン2.3.8 # 2.x系の環境が無かったのでインストール。

$ rvm use 1.8.7-head
Using /home/username/.rvm/gems/ruby-1.8.7-head

$ rvm gemset create rails2r187
'rails2r187' gemset created (/home/username/.rvm/gems/ruby-1.8.7-head@rails2r187).

$ rvm gemset use rails2r187
Using ruby-1.8.7-head with gemset rails2r187

$ rvm gemset install rails --version 2.3.8
installing rails 2.3.8...
rails 2.3.8 installed.

sampleapp02というディレクトリを作成。その中にRVMの設定ファイル「.rvmrc」を作成。

$ mkdir sampleapp02
$ vim ./sampleapp02/.rvmrc
-.rvmrcの内容----------------------
rvm use ruby-1.8.7-head@rails2r187
-----------------------------------

gamsetを確認する。

$ rvm gemset list_all
gemsets for ruby-1.9.3-head (found in /home/username/.rvm/gems/ruby-1.9.3-head)
   global
   rails3

gemsets for ruby-1.8.7-head (found in /home/username/.rvm/gems/ruby-1.8.7-head)
   global
   rails2r187

それぞれのディレクトリに移動してgemsetが自動で切り替わるか確認。
現在のRVM(gemset)の設定
sampleapp => rails3
sampleapp02 => rails2r187

$ cd sampleapp
Using /home/username/.rvm/gems/ruby-1.9.3-head with gemset rails3
$ ruby -v
ruby 1.9.3p203 (2012-05-04 revision 35536) [i686-linux]
$ rails -v
Rails 3.2.3

$ cd ../sampleapp02
Using /home/username/.rvm/gems/ruby-1.8.7-head with gemset rails2r187
$ ruby -v
ruby 1.8.7 (2012-04-14 patchlevel 361) [i686-linux]
$ rails -v
Rails 2.3.8

OKっぽい(^^)