前回は,RVMのインストール,RVMで Rubyをインストールして使う方法を紹介しました。今回は,以下の3つを紹介していきます。
- RVMを最新版にアップデートする
- RVMを使って複数のバージョンのRubyでスクリプトを実行する
- GemSetsについて
RVMを最新版にアップデートする
RVMは,Bugfixや機能追加が毎日行なわれている活発なプロジェクトです。開発者の方は,なるべく最新のバージョンを使うことを推奨しています。ここでは,RVMを最新版にする方法をみてみましょう。
"rvm update --head"を使用すると開発リポジトリであるhttp://github.com/wayneeseguin/rvmから最新版を取得します。githubから取得するため,環境にgitがインストールされている必要があります。
% rvm update --head
アップデートされたRVMを使うためには,"rvm reload"を実行しRVMを再読み込みさせます。
% rvm reload
RVMを使って複数のバージョンのRubyでスクリプトを実行する
今後,書いたプログラムが各Rubyのバージョンで実行できるかを試したいというときがあります。RVMで必要なRubyをいれても,1回ごとにRVMで切り替えて実行するのも大変です。
そのようなときに,RVMではRVMでインストールしているRubyすべてで実行できる"rvm ruby"というコマンドが用意されています。このコマンドの引数に実行したいファイル名を指定することで,RVMでインストールしたRubyすべてで実行することができます。
% rvm list rvm Rubies jruby-1.4.0 [ [i386-java] ] ruby-1.8.7-p249 [ x86_64 ] ruby-head [ x86_64 ] System Ruby system [ x86_64 ] % cat string_each.rb #! /usr/bin/env ruby str = <<EOF abc def ghi EOF str.each do |line| puts line end % rvm ruby string_each.rb jruby-1.4.0: jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.5.0_20) [i386-java] abc def ghi ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.3.0] abc def ghi ruby-head: ruby 1.9.2dev (2010-04-04 trunk 27212) [x86_64-darwin10.3.0] string_each.rb:7:in `<main>': undefined method `each' for "abc\ndef\nghi\n":String (NoMethodError)
この例では,Ruby1.8では問題がないが,Ruby1.9では問題があるということが1回のコマンド実行だけで確認できました。
また,"rvm ruby"は,サブコマンド"ruby"を指定せずに"rvm 実行ファイル名"としても実行できます。
% rvm string_each.rb jruby-1.4.0: jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.5.0_20) [i386-java] abc def ghi ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.3.0] abc def ghi ruby-head: ruby 1.9.2dev (2010-04-04 trunk 27212) [x86_64-darwin10.3.0] string_each.rb:7:in `<main>': undefined method `each' for "abc\ndef\nghi\n":String (NoMethodError)
RVMで多くのRubyをインストールしてしまっているが,特定のバージョンのみで実行したいときもあるでしょう。そのような場合のために,実行するRubyを指定する方法が用意されています。実行方法は,rvmコマンドに続けて実行するRubyの名前をカンマ区切りで指定します。
% rvm ruby-head,ruby-1.8.7-p249 string_each.rb ruby-head: ruby 1.9.2dev (2010-04-18 trunk 27392) [x86_64-darwin10.3.0] string_each.rb:7:in `<main>': undefined method `each' for "abc\ndef\nghi\n":String (NoMethodError) ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.3.0] abc def ghi
今度はJRubyでは実行されず,指定したRubyだけで実行されているのが分かります。

