Ruby Freaks Lounge

第40回 RVM(Ruby Version Manager)による環境構築(2)

この記事を読むのに必要な時間:およそ 4 分

前回は,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だけで実行されているのが分かります。

著者プロフィール

三村益隆(みむらみつたか)

(株)永和システムマネジメントサービスプロバイディング事業部所属。Asakusa.rb。お仕事では,Linuxのカーネル開発やC++での開発等Ruby以外の仕事が多いが,Ruby好き。

bloghttp://d.hatena.ne.jp/takkan_m
Twitterhttp://twitter.com/takkanm

コメント

コメントの記入