複数のRuby環境の構築

開発や保守の作業が多くなると、複数のRuby環境(たとえばバージョン違いやMRI/JRuby/IronRubyなど処理系の違い)を使いこなす必要になります。これをサポートするものとして、Linux、Mac OSXではrvmrbenv、Windowsではpikというツールがあります。これらのツールの主な機能として以下があります。

・異なるRuby処理系のインストール

・複数のRuby環境の切り替え

・環境ごとにgemを別管理

ここでは、Windows版のツールであるpikについて、インストール方法と使い方の概要を説明します。

 

 

pikとは

Windows上で複数のRuby環境を管理するツールです。コマンドプロンプトより実行します。

 

 

pikのインストール

ここではmsiからインストールする手順を紹介します。まず、pikのダウンロードサイトのDownload Packagesから、pik-X.X.X.msi(X.X.Xはバージョン番号)をダウンロードします(本記事では、pik-0.2.8をダウンロードします)。

pikのダウンロード画面

 

ダウンロードしたmsiファイルをダブルクリックして、インストールを開始します。[Next]を押下して次に進みます。

pikインストール開始画面 

 

ライセンスを一読し、「I accept the term in the License Agreement」にチェックを入れて[Next]を押下します。

pik ライセンス条項 

 

インストール先のファイルパスを入れて[Next]を押下します(ここにPATH変数も設定されます)。

pik インストール先の設定 

 

インストールの準備ができました。[Install]を押下します。

pik インストールの準備 

 

インストールが完了しました。

pik インストール完了画面

 

コマンドプロンプトを立ち上げて、「pik list」と入力すると、現在インストールされているRuby処理系が表示されます(処理系が何もインストールされていない場合は、%USERPROFILE%\.pik\config.ymlを編集してダミーのRuby処理系を登録しておきます)。 

C:\Users\RA>pik list
creating C:\Users\RA\.pik
** Adding: 193: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
Located at: C:\Ruby193\bin
* 193: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]

C:\Users\RA>

 

 

pikの使い方

コマンドプロンプトより、各種設定や登録を行います。

 

Ruby処理系のインストール

pik list -r」でインストール可能なRuby処理系やDevKitを表示します。

C:\Users\RA>pik list -r
---
DevKit:
3.4.5r3: http://rubyforge.org/frs/download.php/66888/devkit-3.4.5r3-20091110.7z
IronRuby:
0.3.0: http://rubyforge.org/frs/download.php/53552/ironruby-0.3.0.zip
0.5.0: http://rubyforge.org/frs/download.php/57126/ironruby-0.5.0.zip
0.6.0: http://rubyforge.org/frs/download.php/59717/ironruby-0.6.0.zip
0.9.0: http://rubyforge.org/frs/download.php/61382/ironruby-0.9.0.zip
0.9.1: http://rubyforge.org/frs/download.php/64504/ironruby-0.9.1.zip
0.9.2: http://rubyforge.org/frs/download.php/66606/ironruby-0.9.2.zip
"1.0": http://rubyforge.org/frs/download.php/70179/ironruby-1.0.zip
1.0-rc1: http://rubyforge.org/frs/download.php/67955/ironruby-1.0-rc1.zip
1.0-rc2: http://rubyforge.org/frs/download.php/69180/ironruby-1.0-rc2.zip
1.0.0rc: http://rubyforge.org/frs/download.php/69853/ironruby-1.0.0rc.zip
1.0rc3: http://rubyforge.org/frs/download.php/69665/ironruby-1.0rc3.zip
1.0v4: http://rubyforge.org/frs/download.php/70181/ironruby-1.0v4.zip
JRuby:
1.6.7.2: http://jruby.org.s3.amazonaws.com/downloads/1.6.7.2/jruby-bin-1.6.7.2.zip
1.7.0.preview1: http://jruby.org.s3.amazonaws.com/downloads/1.7.0.preview1/jruby-bin-1.7.0.preview1.zip
Ruby:
1.8.7-p302: http://rubyforge.org/frs/download.php/72087/ruby-1.8.7-p302-i386-mingw32.7z
1.8.7-p330: http://rubyforge.org/frs/download.php/73720/ruby-1.8.7-p330-i386-mingw32.7z
1.8.7-p334: http://rubyforge.org/frs/download.php/74296/ruby-1.8.7-p334-i386-mingw32.7z
1.8.7-p352: http://rubyforge.org/frs/download.php/75108/ruby-1.8.7-p352-i386-mingw32.7z
1.8.7-p357: http://rubyforge.org/frs/download.php/75680/ruby-1.8.7-p357-i386-mingw32.7z
1.8.7-p358: http://rubyforge.org/frs/download.php/75852/ruby-1.8.7-p358-i386-mingw32.7z
1.9.1-p429: http://rubyforge.org/frs/download.php/71496/ruby-1.9.1-p429-i386-mingw32.7z
1.9.1-p430: http://rubyforge.org/frs/download.php/72076/ruby-1.9.1-p430-i386-mingw32.7z
1.9.2-p0: http://rubyforge.org/frs/download.php/72160/ruby-1.9.2-p0-i386-mingw32.7z
1.9.2-p136: http://rubyforge.org/frs/download.php/73723/ruby-1.9.2-p136-i386-mingw32.7z
1.9.2-p180: http://rubyforge.org/frs/download.php/74299/ruby-1.9.2-p180-i386-mingw32.7z
1.9.2-p290: http://rubyforge.org/frs/download.php/75128/ruby-1.9.2-p290-i386-mingw32.7z
1.9.3-p0: http://rubyforge.org/frs/download.php/75466/ruby-1.9.3-p0-i386-mingw32.7z
1.9.3-p125: http://rubyforge.org/frs/download.php/75849/ruby-1.9.3-p125-i386-mingw32.7z
1.9.3-p194: http://rubyforge.org/frs/download.php/76055/ruby-1.9.3-p194-i386-mingw32.7z

C:\Users\RA>

 

この一覧から、「pik install」コマンドでインストールしたい処理系・バージョン(パッチ番号)を指定してインストールします。例えば下の例は、JRuby1.6.7.2をインストールした場合です(JRubyのインストールにはJREが入っていることが必要です)。

C:\Users\RA>pik install jruby 1.6.7.2
** Downloading: http://jruby.org.s3.amazonaws.com/downloads/1.6.7.2/jruby-bin-1
.6.7.2.zip
to: C:\Users\RA\.pik\downloads\jruby-bin-1.6.7.2.zip

jruby-bin-1.6.7.2.zip: 100% |oooooooooooooooooo| 18.8MB/ 18.8MB Time: 00:00:38

You need the 7zip utility to extract this file.
Would you like me to download it? (yes/no) |yes|
yes
** Downloading: http://downloads.sourceforge.net/sevenzip/7za465.zip
to: C:\Users\RA\.pik\downloads\7za465.zip

7za465.zip: 100% |ooooooooooooooooooooooooooooo| 352.5KB/352.5KB Time: 00:00:00

** Extracting: C:\Users\RA\.pik\downloads\jruby-bin-1.6.7.2.zip
to: C:\Users\RA\.pik\rubies\JRuby-1672
done

** Adding: 167: jruby 1.6.7.2 (ruby-1.8.7-p357) (2012-05-01 26e08ba) (Java HotS
pot(TM) Client VM 1.7.0_05) [Windows 7-x86-java]
Located at: C:\Users\RA\.pik\rubies\JRuby-1672\bin

 

同様に、MRI 1.8.7-p358をインストールするには、「pik install ruby 1.8.7-p358」とタイプします。

 

Ruby処理系の切り替え

pik list」コマンドで現在インストールされている処理系の一覧が表示されます。先頭に「*」が付いているのは現在使用中の処理系です。

C:\Users\RA>pik list
167: jruby 1.6.7.2 (ruby-1.8.7-p357) (2012-05-01 26e08ba) (Java HotSpot(T...
187: ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-mingw32]
* 193: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]

 

処理系を切り替えるには、「pik use」に続いて、pik listの先頭の三ケタの数字を指定します。

C:\Users\RA>pik use 167

C:\Users\RA>jruby -v
jruby 1.6.7.2 (ruby-1.8.7-p357) (2012-05-01 26e08ba) (Java HotSpot(TM) Client VM
1.7.0_05) [Windows 7-x86-java]

C:\Users\RA>pik use 187

C:\Users\RA>ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-mingw32]

C:\Users\RA>pik use 193

C:\Users\RA>ruby -v
ruby 1.9.3p194 (2012-04-20) [i386-mingw32]

 

JRubyについては、デフォルトではRuby1.8.7として動作しますが、「--1.9」オプションを付けることでRuby1.9.2として動作します。常に1.9.2として動作させたい場合は、 %USERPROFILE% ディレクトリで、「.jrubyrc」という名前のファイルを作成し、内容に「compat.version = 1.9」と書いておきます。

C:\Users\RA>jruby --1.9 -v
jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba) (Java HotSpot(TM) Client VM
1.7.0_05) [Windows 7-x86-java]

 

インストールしたRuby処理系で同じバージョンが複数ある場合は、一覧が表示されますのでそこから選択します。

C:\Users\RA>pik use 193
Select which Ruby you want:
1. 193: ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
2. 193: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
?

 

なお、pikで切り替えた処理系は、pikコマンドのプロセスから立ち上げた子プロセスでのみ有効です。pikを使わなければ、最初からインストールされている処理系が有効になります。