(続)モダンかもしれないRubyの開発環境構築

perlbrewを導入すると$HOME/perl5以下に関連ファイルが生成されます。
rvmを導入すると$HOME/.rvm以下に関連ファイルが生成されます。

これはほとんど同じもの?

前提

私はperlbrewの事をそんなに知りません。
私はrvmの事を全くしりません。

なので突っ込みは歓迎します。

cpanとgem

perlbrewを使用中にcpanモジュールをインストールすると以下のディレクトリにインストールされます。

$HOME/perl5/perlbrew/perls/perl-x.x.x/lib

それぞれ異なるバージョンに応じて格納されるディレクトリが用意されているのでバージョンによってそれぞれインストールすれば良いわけです。

rvm+gemの場合も同じようにバージョン毎によって異なるディレクトリが用意されていました。

% ls -1 $HOME/.rvm/gems                                                 [~/.rvm/gems]
-help
cache
ruby-1.8.7-p334
ruby-1.8.7-p334@global
ruby-1.9.2-p180
ruby-1.9.2-p180@global

gem で何かinstall してみましょう

% rvm use 1.9.2
Using /Users/okamura/.rvm/gems/ruby-1.9.2-p180
% ls /Users/okamura/.rvm/gems/ruby-1.9.2-p180/gems/
rake-0.8.7

% gem install mspec
...
% ls /Users/okamura/.rvm/gems/ruby-1.9.2-p180/gems/
mspec-1.5.17    rake-0.8.7

思った通り、使用しているバージョンにマッチしたディレクトリにインストールされています。
おそらくperlbrewとrvmはほとんど同じものだと思います。

gemset?

rvmではgemを自由に作成する事ができ、かつそれと異なるバージョンのrubyとを自由に組み合わせる事ができるようです。

gemsetを作成する

% rvm gemset create hoge
% rvm gemset list 

gemsets for ruby-1.9.2-p180 (found in /Users/okamura/.rvm/gems/ruby-1.9.2-p180)
   global
   hoge

gemsetを切り替える。まっさらなので自由にできる

% rvm 1.9.2-p180@hoge
% gem list                                                           [~]

*** LOCAL GEMS ***

rake (0.8.7)

デフォルトに戻る

% gem list                                                           [~]

*** LOCAL GEMS ***

mspec (1.5.17)
rake (0.8.7)

hogeを消す

% rvm gemset delete hoge                                             [~]
WARN: Are you SURE you wish to remove the entire gemset directory 'hoge' (/Users/okamura/.rvm/gems/ruby-1.9.2-p180@hoge)?
(anything other than 'yes' will cancel) > yes

確認

% rvm gemset list                                                    [~]

gemsets for ruby-1.9.2-p180 (found in /Users/okamura/.rvm/gems/ruby-1.9.2-p180)
   global

感想

gemsetを自由に作成できて、それを切り替えて使う事が簡単にできるようです。
プロジェクト毎によってgemsetを作成したりする事もできるでしょうし、globalに共通のモジュールを格納したりできたりするのかな?

コマンド一覧は以下の模様。copyもできるらしい。

{import,export,create,copy,rename,empty,delete,name,dir,list,list_all,gemdir,install,pristine,clear,use,update,unpack,globalcache}

もしかしてperlbrewでも同じ事ができるかな?
次はRuby on Rails やってみよう。