ジェムの win32console を Ruby1.9.1 で(マジックコメント)

「spec -c」でスペックのカラー表示をして試るのだが、win32console の所でエラーが起きてしまう。環境は、Windows XP Pro. SP3 にartonさんの Ruby 1.9.1パッケージ(ActiveScriptRuby and Other packagesより)をいれたもの、ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32]。(artonさんいつも有難うございます)
試しに irb してみるがエラー、「invalid multibyte char (US-ASCII)」。

[云々]>irb -r rubygems -r win32console
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/win32console-1.2.0-x86-mswin32-6
0/lib/win32console.rb:1:in `require': C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1
/gems/win32console-1.2.0-x86-mswin32-60/lib/Win32/Console/ANSI.rb:324: invalid m
ultibyte char (US-ASCII) (SyntaxError)
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/win32console-1.2.0-x86-mswin32-6
0/lib/Win32/Console/ANSI.rb:324: invalid multibyte char (US-ASCII)
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/win32console-1.2.0-x86-mswin32-6
0/lib/Win32/Console/ANSI.rb:324: syntax error, unexpected $end, expecting ')'
              s.tr!("�≠ヤ・?炎牛誌髄駐舶沫・圀撼氈...
                       ^
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/win32console-1.2.0-
x86-mswin32-60/lib/win32console.rb:1:in `<top (required)>'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/irb/init.rb:262:in `require'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/irb/init.rb:262:in `block in
load_modules'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/irb/init.rb:260:in `each'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/irb/init.rb:260:in `load_modu
les'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/irb/init.rb:20:in `setup'
        from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/irb.rb:53:in `start'
        from C:/PROGRA~1/RUBY-1~1.1/bin/irb.bat:20:in `<main>'

文字コードですね、所要のファイル、1.9系の gem の lib の Win32\Console\ANSI.rb 冒頭にマジックコメントを書いてやる。

# -*- coding: CP1250 -*-

コード指定は「CP1250」とした、ANSI.rb のエラー箇所ではその辺の判定をしてるっぽい。「Shift_JIS」では駄目でした。
で、また「irb -r rubygems -r win32console」今度はエラーダイアローグ「msvcrt-ruby18.dll」が見付りませんとの事、ダイアローグに答えれば irb 自体は起動する。ファイル見ると、1.9系の binディレクトリに「msvcrt-ruby191.dll」はあるんだけどね。「msvcrt-ruby18.dll」の方は 1.8系の binディレクトリに普通に存在する、1.9系コンソールではそっちへのパスを通してないので見付らないのでしょう。でもなんで 1.8系の dll を探しに行くかな。

そして「spec -c」でのカラー表示は出来るようになった、コマンド実行の毎にエラーダイアローグ出るけど。

それでもいいのか

(その後追記)

ちょっくら msvcrt-ruby191.dll をコピーして、191 を 18 に改名して誤魔化してみようとしたけど失敗、「lib/Console.so: [BUG] Segmentation fault」。
エラーメッセージみて lib/Win32/Console.rb を読んでみたんだけど、無いなら無いなりに何とかしてるみたい。Console.so の require に失敗したらピュアRuby版をとってくる(けどちょっと遅いよ)みたいな。
$DEBUGモードで実行するとその旨言ってくれるし、動くからいいや。

[云々]>irb -d -rrubygems -rwin32console
Exception `LoadError' at C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/win32co
nsole-1.2.0-x86-mswin32-60/lib/Console.so:0 - 126: 指定されたモジュールが見つか
りません。   - C:/PROGRA~1/RUBY-1~1.1/lib/ruby/gems/1.9.1/gems/win32console-1.2.
0-x86-mswin32-60/lib/Console.so
Using slower, non-DLL Console.rb
irb(main):001:0>