(ruby)(WindowsXP)(Ruby1.8 と Ruby1.9 を 共存させてみた)

 1.9系だと 1.8系のスクリプトが動かなかったりする問題が 結構ありますよね
だから 「最新の機能も勉強したいけど 1.8系のスクリプトが動かなくなるのは 嫌だな・・・」と
思う人も少なくないでしょう、 ということで 1.8系と 1.9系を 共存させる方法を考えてみました

 コマンドプロンプトから rubyスクリプト名> として実行した場合
挙動を見ている限り パスが通った所に ruby.exeがあれば そのパスを起点にして動作していますよね
irb や gem なども同じですね

 ということは、 1.8系 と 1.9系を 別の所にインストールして
その時その時に 環境変数の path を 切り替えれば おそらく うまく行くはずです

 私の場合は ruby1.8 を c:\ruby に インストールしてますので
ruby1.9 は c:\ruby19 に インストール(というかそこに最新版を解凍)しました
普段は 1.8系に対して 関連付けしているし パスが通っているので
コマンドプロンプトを開いた直後 や 単純に実行させたり した場合は 1.8系で実行されます

 そこで まずは 1.9系モードに移行する 「ruby19.bat」という .batファイルを作ってみました
@echo off
cls
prompt ruby19mode$s:$s$l$p$g$_$g
set path=C:\Program Files\ImageMagick-6.5.3-Q8;C:\Ruby19\bin;C:\WINDOWS;C:\WINDOWS\system32;D:\___DLL___;C:\Tcl\bin
ruby -v
echo.
RMagickや Tkも 利用したいので 必要に応じて パスを通してます
また 私の場合は アーカイバー系の.dllや migemo.dll等の DLLファイルや このバッチファイル等は
c:\windows には コピーせずに、 D:\___DLL___\ に置いて そこにパスを通してますので
そこにも パスを通しています
そして 今のモードが きちんと分かるように プロンプトも変更させてます
↓ 実行結果 (実行後 pathを表示させています)
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32]

ruby19mode : <D:\>
>path
PATH=C:\Program Files\ImageMagick-6.5.3-Q8;C:\Ruby19\bin;C:\WINDOWS;C:\WINDOWS\s
ystem32;D:\___DLL___;C:\Tcl\bin

ruby19mode : <D:\>
>
 ついでに 1.8系モードに戻れるようにも 「ruby18.bat」という .batファイルも作りました
@echo off
cls
prompt ruby18mode$s:$s$l$p$g$_$g
set path=C:\Program Files\ImageMagick-6.5.3-Q8;C:\Ruby\bin;C:\WINDOWS;C:\WINDOWS\system32;D:\___DLL___;C:\Tcl\bin
ruby -v
echo.
まぁ パスを 1.8系の所に変更させただけですね 笑)

 今回の例では あくまで コマンドプロンプトから実行する場合に限られます
そして コマンドプロンプトを 終わらせれば
batファイルで設定した パス や プロンプト設定などは 破棄されますので
そのつど ruby19 を実行する必要があります
ただ とりあえず 1.9系を勉強出来ればいいや って感じの人にとっては
こんな感じの仕様の方が やりやすいかな?