hirax.net::inside out::2010年03月11日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2010年2月 を読む << 2010年3月 を読む >> 2010年4月 を読む

2010-03-11[n年前へ]

各種Rubyを切り替えるpikを使ってみる 

 いくつかの異なるバージョンのRubyをインストールし、自由に切り替えて使うことができる、しかもgemでのアップデートなども同時に行うことができるpikを使い始めました。使い始めた理由は、好きな時に好きな「Rubyのバージョン違い・IronRubyやJRubyといった異なるRuby」を使ってみたかったからです。

 まず、gemでインストールします。つまり、最初にRubyが入っていることが前提です。そして、その時に入っていたRubyが「default」になります。

gem install pik
すると、使い方の説明表示とともに、インストールが終わります。

 さらに、pikの配置作業を行いましょう。適当な場所にインストールして(環境変数の)PATHに追加するか、最初からパスが通っている(PATHに入っている)ディレクトリにpikを配置します。ここでは、単純のために、"C:\Windows"にpikを配置してみます。

pik_install C:\Windows

 次は、さまざまなRubyのインストールです。pikでは、インストールできるRubyが自動でわかります。そこで、このようなコマンドを打ちます。

pik ls -r -V
すると、
pik 0.2.6
---
IronRuby:
 (以下省略)
JRuby:
 (以下省略)
Ruby:
 (以下省略)
といった風に、インストールできるRuby一覧が出てきます(後で書くように、手動でこれ以外のRubyもインストールできます)。

 適当なRubyをインストールするには、たとえば、このようにします。

pik install ruby
すると、自動でRubyの一番新しいバージョンの 1.9.1-p378: http://rubyforge.org/frs/download.php/69039/ruby-1.9.1-p378-i386-mingw32.7z がインストールされます。
pik install jruby
pik install ironruby
でも同じです。また、もしもRubyのバージョン指定でインストール作業を行いたいならば、指定方法は色々ありますが、たとえば、
pik install ruby -v 1.8.7
という具合です。

 また、自動ではリストアップされないものに関しては(今日現在でのIronRubyの最新版1.05c=0.9.4などは自動ではリストアップされません)、手動で、ローカルにインストールした上で、

pik add C:\Windows\pik\IronRuby-094\bin
としてやれば、gemの管理下に入ります。

 あとは、

pik list
と打てば、
092: IronRuby 0.9.2.0 on .NET
094: IronRuby 0.9.4.0 on .NET
140: jruby 1.4.0 
186: ruby 1.8.6  [i386-mswin32] *
187: ruby 1.8.7 
191: ruby 1.9.1p378 
という風に、切り替えて使うことができるRuby一覧が出てきます。あとは、
pik switch 191
とすれば、ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]が使われるように切り替わります。別に191という指定でなくても、「191: ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]」という文字列の中から他と区別できる文字列をswitchで指定してやれば良いようになっています。

 基本的には、「パスを切り替える」という作業を行うものなので、この状態で

pik switch 94
とIronRuby 0.9.4.0に切り替えて、
ruby -v
と打っても、こう言われるだけです。
'ruby' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
この場合は、
ir.exe -v
とするか、そもそも(Ironrubyの)ir.exeをruby.exeという名前に変えておく必要があります。

 pikを使うと、Rubyを切り替えることができるのも便利ですが、各Rubyにgemを一括で行うことができるのも便利です。たとえば、

pik gem install win32-mmap
とすれば、各Rubyに切り替えつつ、それぞれに対してgemを行ってくれます。ただし、Rubyを切り替えた場合には、そのRubyの機能内のことしかできなくなる、ということには注意が必要です。IronRubyに切り替えたときなどは、実装されていないメソッドによりpik自体も、手作業なしに完全に自動で終了する、といわけではなかったりします(といっても、pikを使った方がずっと便利です)。どうしても、困ったことが起きた瞬間には、
pik default
として、「default」のRubyに戻して、作業をしてみましょう。