rvm のgemsetをおさらい(Mac でRuby)

rvm ではrubyのバージョンだけではなく,gemの組合せも管理できるのです.
sinatraで開発するセット,rails 3を使うセット,...etc
開発内容にあわせて切り分けられるってわけですね.

前回のエントリ に引き続き
Snow Leopardrubyの環境を整えるついでに
rvmのgemset についておさらいしておこうと思います.

やってみる

ruby 1.9.2 を例に使ってみます.

$ rvm use 1.9.2

最近お気に入りのnanoc用のセットを作ってみます.

$ rvm gemset create nanoc

できたセットを見てみると....

$ rvm gemset list
   global
   nanoc

globalというのが最初からあります.
このセットは共通して使うgemをインストールするために使うようです.
ではとりあえずglobalを利用してみます.

$ rvm gemset use global

これは

$ rvm use 1.9.2@global

もしくは

$ rvm use @global

も同じ意味です.

あらためて一覧を見てみると

$ rvm gemset list
=> global
   nanoc

と現在使っているセットに"=>" と矢印がつきます.
いつでも使いそうな rdoc, ri , wirble をインストールして,
nanoc セットに切り替えてみると

$ rvm gemset use nanoc
$ gem list

*** LOCAL GEMS ***

rake (0.9.2, 0.8.7)
rdoc (3.6.1)
wirble (0.1.3)

と,たしかにglobal でインストールしたgemが一覧に出てきます.
あとはnanoc での開発用に必要なgemをインストールして環境構築終了っ!

賢い使い方

新規でセットを作って即その環境を使うときは

$ rvm use --create 1.9.2@rails3

なんて一行で済みます.便利!

また,開発内容を切り替えるときに手動は面倒!なんてときは
開発内容のディレクトリに.rvmrc ファイルを置いて

rvm use 1.9.2@nanoc

なんて記述しておくと,ディレクトリを移動したときに
gemsetも切り替わっちゃいます.

ただし...

ディレクトリ移動のたびに切り替え確認を問われるので,
それが面倒な場合,homeの.rvmrcに設定を追加しておくとよいでしょう.

$ vi ~/.rvmrc
rvm_install_on_use_flag=1

使いそうなコマンド

ヘルプを見てみると...

$ rvm gemset help
  Usage:

    rvm gemset [action]

  Action:

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

とずいぶんできることがあって知らないものも結構ある!

とりあえず使いそうなものだけピックアップしておくと...

$ rvm gemset create 名称    # セットを新規作成
$ rvm use 名称                    # セットの切り替え
$ rvm gemset empty           # インストールしたgem を取り除く
$ rvm gemset delete 名称    # セット自体を消去
$ rvm gemset install 名称    # gem install... と同じ

くらいでしょうか.
セットを作りすぎて迷子になったときは

$ rvm gemset name    # 現在使っているセット
$ rvm gemset list        # 現在使っているruby のバージョン内のgemセット一覧
$ rvm gemset list_all   # rubyのバージョンをまたいだgemセット一覧
$ rvm gemset dir        # 現在使っているセットのディレクトリパス

が使えると便利!

追記

rubyのバージョンを変えて同じgemsetを使いたい場合

$ rvm gemset copy ruby1.9.2-p180@global ruby1.9.2-p290@global

のように簡単にコピーできます :-)