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に戻して、作業をしてみましょう。