前回は、
- RVMを最新版にアップデートする
- RVMを使って複数のバージョンのRubyでスクリプトを実行する
- GemSetsについて
RVMを最新版にアップデートする
RVMは、
"rvm update --head"を使用すると開発リポジトリであるhttp://
% rvm update --head
アップデートされたRVMを使うためには、
% rvm reload
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)
この例では、
また、
% 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をインストールしてしまっているが、
% 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では実行されず、
GemSetsについて
GemSetsとは、
"rvm gemdir"コマンドを使うことで、
% rvm gemdir /Users/takkanm/.rvm/gems/ruby-1.8.7-p249
GemSetsを使用するとRubyGemsがインストール、
% rvm gemset list
gemsets : for ruby-1.8.7-p249 (found in /Users/takkanm/.rvm/gems/)
global
globalは、
それでは、
% rvm gemset create rails2
Gemset 'rails2' created.
% rvm gemset list
gemsets : for ruby-1.8.7-p249 (found in /Users/takkanm/.rvm/gems/)
global
rails2
作成したGemSetsを使用するには、
% rvm gemdir
/Users/takkanm/.rvm/gems/ruby-1.8.7-p249
% rvm gemset use rails2
Now using gemset 'rails2'
% rvm gemdir
/Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails2
もしくは"rvm use"を使用する際に、
% rvm use 1.8.7-p249@rails2
Using ruby 1.8.7 p249 with gemset rails2
また、
% rvm --create use 1.8.7-p249@rails3 Using ruby 1.8.7 p249 with gemset rails3 % rvm gemset list gemsets : for ruby-1.8.7-p249 (found in /Users/takkanm/.rvm/gems/) global rails2 rails3
使用するGemSetsを変更すると、
% rvm use 1.8.7-p249@rails2 Using ruby 1.8.7 p249 with gemset rails2 % rvm gemdir /Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails2 % echo $GEM_PATH /Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails2:/Users/takkanm/.rvm/gems/ruby-1.8.7-p249@global % echo $GEM_HOME /Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails2 % rvm use 1.8.7-p249@rails3 Using ruby 1.8.7 p249 with gemset rails3 % rvm gemdir /Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails3 % echo $GEM_PATH /Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails3:/Users/takkanm/.rvm/gems/ruby-1.8.7-p249@global % echo $GEM_HOME /Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails3
Rails2とRails3の共存
それでは、
最近、
まず、
% rvm use 1.8.7-p249@rails2
Using ruby 1.8.7 p249 with gemset rails2
% gem install rails
Successfully installed activesupport-2.3.5
Successfully installed activerecord-2.3.5
Successfully installed rack-1.0.1
Successfully installed actionpack-2.3.5
Successfully installed actionmailer-2.3.5
Successfully installed activeresource-2.3.5
Successfully installed rails-2.3.5
7 gems installed
% rails -v
Rails 2.3.5
% which rails
/Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails2/bin/rails
次に、
% rvm use 1.8.7-p249@rails3
Using ruby 1.8.7 p249 with gemset rails3
% gem install rails3b
Successfully installed activesupport-2.3.5
Successfully installed mime-types-1.16
Successfully installed polyglot-0.3.1
Successfully installed treetop-1.4.5
Successfully installed mail-2.1.5.3
Successfully installed text-hyphen-1.0.0
Successfully installed text-format-1.0.0
Successfully installed rack-1.1.0
Successfully installed rack-test-0.5.3
Successfully installed rack-mount-0.4.7
Successfully installed abstract-1.0.0
Successfully installed erubis-2.6.5
Successfully installed i18n-0.3.7
Successfully installed tzinfo-0.3.19
Successfully installed builder-2.1.2
Successfully installed memcache-client-1.7.8
Successfully installed bundler-0.9.21
Successfully installed thor-0.13.4
Successfully installed rails3b-3.0.1
19 gems installed
% gem install rails --pre
Successfully installed activesupport-3.0.0.beta3
Successfully installed activemodel-3.0.0.beta3
Successfully installed rack-mount-0.6.3
Successfully installed actionpack-3.0.0.beta3
Successfully installed arel-0.3.3
Successfully installed activerecord-3.0.0.beta3
Successfully installed activeresource-3.0.0.beta3
Successfully installed mail-2.2.0
Successfully installed actionmailer-3.0.0.beta3
Successfully installed railties-3.0.0.beta3
Successfully installed rails-3.0.0.beta3
11 gems installed
% rails -v
Rails 3.0.0.beta3
% which rails
/Users/takkanm/.rvm/gems/ruby-1.8.7-p249@rails3/bin/rails
ここで、
% rvm use 1.8.7-p249@rails2
Using ruby 1.8.7 p249 with gemset rails2
% rails -v
Rails 2.3.5
おわりに
今回は、
RVMは、
- 複数のRubyでRakeタスクを実行する
- 複数のRuby でベンチマークをとる
- 複数のRubyでプロファイルをとる
- GemSetsのインポート/エクスポート
RVM は英語ではありますがドキュメントがしっかししているので、
ぜひRVMを使って、