pik を使ってみた
Windows 環境で複数の Ruby 処理系を管理できる pik を使ってみました。
vertiginous's pik at master - GitHub
https://github.com/vertiginous/pik
インストール
インストールは gem から行えます。
また、下記ページにて配布されている msi インストーラでインストールすることもできるようです。
Downloads for vertiginous's pik - GitHub
https://github.com/vertiginous/pik/downloads
ここでは、既に導入済みの Ruby 環境から gem でインストールすることにしました。
C:\src\ruby>gem install pik
これで gem としてインストールされました。
次に、pik のコマンド類をインストールするフォルダを作成します。
C:\src\ruby>md C:\Programs\pik
作成したフォルダのフルパスを引数に、pik_install コマンドを実行します。
C:\src\ruby>pik_install C:\Programs\pik Thank you for using pik. mkdir -p C:\Programs\pik mkdir -p C:\Users\akishin/.pik Installing to C:\Programs\pik cp C:/Programs/ruby-1.8.7-p302-i386-mingw32/lib/ruby/gems/1.8/gems/pik-0.2.8/tools/pik_runner.exe C:\Programs\pik cp C:/Programs/ruby-1.8.7-p302-i386-mingw32/lib/ruby/gems/1.8/gems/pik-0.2.8/tools/pik.bat C:\Programs\pik cp C:/Programs/ruby-1.8.7-p302-i386-mingw32/lib/ruby/gems/1.8/gems/pik-0.2.8/tools/pik.ps1 C:\Programs\pik creating C:\Users\akishin/.pik/.pikrc pik is installed The directory you installed to is not in the sytem path. C:\Programs\pik You will need to add it. if you want to use pik with git bash, add the following line to your ~/.bashrc: [[ -s $USERPROFILE/.pik/.pikrc ]] && source $USERPROFILE/.pik/.pikrc
メッセージにあるように、環境変数 PATH に pik をインストールしたフォルダを追加します。
ここでは、コマンドプロンプトの再起動が面倒だったので、set コマンドを使います。
set コマンドでの変更はコマンドプロンプトを終了すると破棄されてしまうので、後でちゃんとシステムのプロパティの方にも追加しておきます。
C:\src\ruby>set PATH=%PATH%;C:\Programs\pik
これで pik の導入は完了です。
試しに、pik で管理されている Ruby 処理系を一覧する「pik list」コマンドを実行してみると、pik のインストールに使用した処理系が登録されている事が分かります。
C:\src\ruby>pik list ** Adding: 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] Located at: C:\Programs\ruby-1.8.7-p302-i386-mingw32\bin * 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32]
新たな処理系のインストール
pik では、システムに新たな Ruby 処理系をインストールすることができます。
インストール可能な Ruby 処理系は「pik list -r」で確認できます。
C:\src\ruby>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.4.1: http://jruby.org.s3.amazonaws.com/downloads/1.4.1/jruby-bin-1.4.1.zip 1.5.3: http://jruby.org.s3.amazonaws.com/downloads/1.5.3/jruby-bin-1.5.3.zip Ruby: 1.8.6-p398-2: http://rubyforge.org/frs/download.php/71102/ruby-1.8.6-p398-i386-mingw32-2.7z 1.8.7-p249-1: http://rubyforge.org/frs/download.php/71081/ruby-1.8.7-p249-i386-mingw32-1.7z 1.8.7-p299: http://rubyforge.org/frs/download.php/71493/ruby-1.8.7-p299-i386-mingw32.7z 1.8.7-p302: http://rubyforge.org/frs/download.php/72087/ruby-1.8.7-p302-i386-mingw32.7z 1.9.1-p378-1: http://rubyforge.org/frs/download.php/71082/ruby-1.9.1-p378-i386-mingw32-1.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-rc1: http://rubyforge.org/frs/download.php/71498/ruby-1.9.2-rc1-i386-mingw32.7z 1.9.2dev-preview3-1: http://rubyforge.org/frs/download.php/71175/ruby-1.9.2dev-preview3-i386-mingw32-1.7z
一覧の中からインストールしたい処理系が決まったら、「pik install」コマンドで実際にインストールを行います。
この時、7zip のコマンドがインストールされていない場合、確認の上そちらも自動でインストールしてくれるようです。
便利ですね。
C:\src\ruby>pik install ruby 1.9.2 ** Downloading: http://rubyforge.org/frs/download.php/71175/ruby-1.9.2dev-preview3-i386-mingw32-1.7z to: C:\Users\akishin\.pik\downloads\ruby-1.9.2dev-preview3-i386-mingw32-1.7z ruby-1.9.2dev-preview3-i...7z: 100% |oooooooooo| 5.7MB/ 5.7MB Time: 00:00:26 You need the 7zip utility to extract this file. Would you like me to download it? (yes/no) |yes| ** Downloading: http://downloads.sourceforge.net/sevenzip/7za465.zip to: C:\Users\akishin\.pik\downloads\7za465.zip 7za465.zip: 100% |ooooooooooooooooooooooooooooo| 352.5KB/352.5KB Time: 00:00:00 ** Extracting: C:\Users\akishin\.pik\downloads\ruby-1.9.2dev-preview3-i386-mingw32-1.7z to: C:\Users\akishin\.pik\rubies\Ruby-192dev-preview3-1 done ** Adding: 192: ruby 1.9.2dev (2010-05-31) [i386-mingw32] Located at: C:\Users\akishin\.pik\rubies\Ruby-192dev-preview3-1\bin
pik によりインストールした Ruby は自動で pik list に追加されています。
C:\src\ruby>pik list ** Adding: 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] Located at: C:\Programs\ruby-1.8.7-p302-i386-mingw32\bin * 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] 192: ruby 1.9.2dev (2010-05-31) [i386-mingw32]
既にインストールされている処理系の追加
pik を使ってみて特にいいな、と思った点でもあるのですが、既に導入済みの Ruby 処理系も管理対象として追加する事ができます。
追加するには「pik add」コマンドの引数に追加したい Ruby 処理系の ruby.exe のフルパスを指定します。
C:\src\ruby>pik add C:\Programs\ruby-1.8.7-p249-i386-mingw32\bin ** Adding: 187: ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] Located at: C:\Programs\ruby-1.8.7-p249-i386-mingw32\bin C:\src\ruby>pik add C:\Programs\ruby-1.9.1-p378-i386-mingw32\bin ** Adding: 191: ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32] Located at: C:\Programs\ruby-1.9.1-p378-i386-mingw32\bin
「pik list」を実行すると追加されたことが確認できます。
C:\src\ruby>pik list 187: ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] * 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] 191: ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32] 192: ruby 1.9.2dev (2010-05-31) [i386-mingw32]
現在有効な Ruby 処理系を切り替える
現在有効な Ruby 処理系を切り替えるには、「pik use」コマンド、または「pik switch」、「pik sw」コマンドを使います。
pik list 実行時に左端に表示されているバージョン番号を引数に指定します。
C:\src\ruby>pik use 192 C:\src\ruby>pik list 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] * 192: ruby 1.9.2dev (2010-05-31) [i386-mingw32] C:\src\ruby>ruby -v ruby 1.9.2dev (2010-05-31) [i386-mingw32]
バージョン番号が同一で patchlevel が異なる処理系がインストールされている場合、バージョン番号と併せて patchlevel を指定することで明示的に切り替えることもできます。
C:\src\ruby>pik use 187 302 C:\src\ruby>pik list 186: ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] 187: ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] * 187: ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32] 191: ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32] 192: ruby 1.9.2dev (2010-05-31) [i386-mingw32]
pik を使用すると、このように非常に簡単に複数の Ruby 処理系を切り替えて使用する事ができます。
先にも書きましたが、個人的に既に導入済みの環境を管理対象に追加できる機能が特にお気に入りですね。
この機能のお陰で、InstantRails や RubyInstaller などを既に導入済みの場合でも、気軽に pik による管理を始める事ができます。
ちなみに Linux や Mac などの方は RVM というほぼ同等のツールがあるので、使ってみると幸せになれるかと思います。