複数のRuby環境の管理・切替ができるpikを実行できた

[Ruby][備忘録]複数のRuby環境の管理・切替ができるpikを実行できた

あらすじ

インストール手順(gem)

※gemでは実際にRubyをinstallする段階の所で失敗したので、実際は次のmsiを使ってインストールした。

  • gemでOK
gem install pik
  • pikをインストールするにはpik_installコマンドを実行する必要があるが、フォルダを作成し、PATHに追加してから実行してくれと言われる
$ pik_install
Usage:  pik_install path\to\install

You should install to a directory that is in your system path,
or add the directory to your system path.  Do not install to
your ruby's bin directory because pik will remove it from the
path when switching versions.

Example:

  C:\>path

  PATH=C:\tools;C:\ruby\Ruby-186-p383\bin;C:\WINDOWS\system32;...

  C:\>pik_install C:\tools
  • C:\pikフォルダ作成しPATHに追加し再度
$ pik_install C:\pik
Thank you for using pik.

mkdir -p C:\pik
mkdir -p %userprofile%/.pik
Installing to C:\pik

cp C:/ruby/lib/ruby/gems/1.8/gems/pik-0.2.8/tools/pik_runner.exe C:\pik
cp C:/ruby/lib/ruby/gems/1.8/gems/pik-0.2.8/tools/pik.bat C:\pik
cp C:/ruby/lib/ruby/gems/1.8/gems/pik-0.2.8/tools/pik.ps1 C:\pik

creating %USERPROFILE%/.pik/.pikrc

pik is installed

The directory you installed to is not in the sytem path.
C:\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/.pikr
  • ホームとC直下にファイルが作成された

インストール手順(msi)

※gemから入れるとRubyをinstallする段階でエラーが表示された。

$ pik install ruby -v 1.9.2-P136
pik 0.2.8

There was an error.
 Error: private method `gsub' called for nil:NilClass

  in: pik/commands/install_command.rb:24:in `execute'
  in: pik_runner:33
  • 他のバージョンでもだめだった。ぐぬぬ。調べてみるとgemからではなくmsiからインストールした方がよいとの事なので一回gem uninstallしてmsiからインストールする事に。。。
\* \[https://github.com/vertiginous/pik/downloads:title\]

から .msi をダウンロードして実行してください。今回は pik 2.8.0 を使いました。

http://d.hatena.ne.jp/miau/20110106/1294325095

  • msiからインストールする場合Rubyが空っぽの場合からでもいけるようなので既存のRubyを削除。。
  • そしてmsi実行

pikコマンドを打つ際にRubyが一つも入っていないとエラーになるため、%USERPROFILE%\.pik\config.ymlにダミーのバージョンを記載する必要がある。

--- 
"000: ruby 0.0.0 (dummy ruby for pik)": 
  :path: !ruby/object:Pathname 
    path: C:/pik/dummy
--- {}

で、使用法へ。

使用法

  • 現在インストールされているRuby表示
$ pik list
 * 187: ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
  • インストール可能なRuby一覧表示。Ruby1.8から1.9からJRubyまで
$ 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.5.6: http://jruby.org.s3.amazonaws.com/downloads/1.5.6/jruby-bin-1.5.6.zip
  1.6.4: http://jruby.org.s3.amazonaws.com/downloads/1.6.4/jruby-bin-1.6.4.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.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.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フォルダへRubyインストール
$ pik install ruby -v 1.9.2-p0
pik 0.2.8
** Downloading:  http://rubyforge.org/frs/download.php/72160/ruby-1.9.2-p0-i386-mingw32.7z
   to:  %userprofile%\.pik\downloads\ruby-1.9.2-p0-i386-mingw32.7z

ruby-1.9.2-p0-i386-mingw32.7z: 100% |oooooooooo|   5.7MB/  5.7MB Time: 00:00:20

You need the 7zip utility to extract this file.
Would you like me to download it? (yes/no)  |yes|
y [ENTER]
7za465.zip: 100% |ooooooooooooooooooooooooooooo| 352.5KB/352.5KB Time: 00:00:00

** Extracting:  %USERPROFILE%\.pik\downloads\ruby-1.9.2-p0-i386-mingw32.7z
   to:  %USERPROFILE%\.pik\rubies\Ruby-192-p0
done

** Adding:  192: ruby 1.9.2p0 (2010-08-18) [i386-mingw32]
 Located at:  %USERPROFILE%\.pik\rubies\Ruby-192-p0\bin

お、行けた。[1]

  • 再度確認。1.9が入ってる。
 $ pik list
 * 187: ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
   192: ruby 1.9.2p0 (2010-08-18) [i386-mingw32]

最後にswitch or sw or use コマンドを使用する事でrubyのバージョンを切り替えられる……はずだったのだが、どうにも試した環境だと変わらなかった。何故変わらんのだー。ので、今回の導入は見送りして少し調べないといかん。

20111124追記

……と、切り替わらなかったのが前回までの話。原因は主に二つあり、なぜ切り替わらなかったのかわかるためにはpikの動きを追う必要があった。

  1. 環境変数がおかしかった
  2. コマンドプロンプトではなくnyaosを使っていた

この記事では1を解決させる。nyaosは http://d.hatena.ne.jp/kk_Ataka/20111124/1322138944:title で。

2-1. pik_runner.exe の処理を読むと最後に切り替えたRubyのパスを環境変数に追加するために%USERPROFILE%\.pik\pik.batを実行していると書いている。

  • ただし、このpik.batはインストールしてpik listとかって実行する時のpik.batとは違う
    • そのpikはC:\pikとかに入っているはず

知らなかった……こんなbatファイルが生成されているとは。このSET PATHを見ると……ギャーーー!! なんかpath変数の頭の方に%PATH%が入っていて、pikで追加したRuby(%USERPROFILE%\.pik\rubies\Ruby-192-p0\binなど)より既存Ruby(C:\ruby\binなど)のパスが前におるじゃないかぁぁぁ! というわけで、path変数から%PATH%を取り除いたのが一つ。これでコマンドプロンプトからは動いた!

その他

今回は使わなかったコマンドたち

既に入っているRubyをpikへ追加するaddと削除するuninstall

$ pik add Rubyのパス(ruby.exeのある場所)
$ pik uninstall ruby -v 187

※コマンドはバージョンによって若干記述が違う様子。特にsw or switch or useあたり?

[1] config.ymlを開きっぱにしている場合、Permission deniedがでる

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2011/12/27 [Evernote] [Ruby] [API] EvernoteのAPIをRubyから叩きたい
  2. 2011/12/26 [Ruby] [Haml] [Sinatra] SinatraでHaml入門
  3. 2011/12/21 [Ruby] Ruby実行時のオプションをよろしく解析してくれるoptparseを使ってみる
  4. 2011/12/15 [Ruby] [Solaris] [Redmine] RedmineとApacheを連携させるPassengerをインストールできなかった
  5. 2011/12/07 [Ruby] ZenTestでRSpecを自動実行できるようにした
  6. 2011/12/05 [Ruby] [Redmine] RedmineでプラグインインストールしたらTemplateErrorが出た
  7. 2011/12/04 [Ruby] [Mac] [Unix] 複数のRuby環境の管理・切替ができるrvmをインストールした
  8. 2011/11/30 [Ruby] [Heroku] rvm環境でRuby実行時にReadlineエラーが起きた時の対処法
  9. 2011/11/29 [Ruby] pikでインストールしたRubyでbundle exec rubyしたらエラーになった 解決編
  10. 2011/11/28 [Ruby] pikでインストールしたRubyでbundle exec rubyしたらエラーになった
  11. 2011/11/27 [Ruby] [Heroku] [Lokka] LokkaをインストールしてHerokuにデプロイした
  12. 2011/11/26 [Ruby] [Sinatra] [Heroku] HerokuにWebアプリ(Sinatra)をデプロイする手順をまとめた
  13. 2011/11/24 [Ruby] 複数のRuby環境の管理・切替ができるpikを実行できた nyaos編
  14. 2011/10/03 [Ruby] Rubyのgemバージョン管理ができるBundlerを実行できなかった
  15. 2011/09/30 [Java] [Windows] [Ruby] .msgファイルをパースして中から添付ファイルを抜き出す