Windows で RSpec の色

Windows(7 Professional SP1 64bit)を使っている、そのまま rspec -c でスペック出力を色付けしようとしても、次のような感じ

You must use ANSICON 1.31 or later (http://adoxa.110mb.com/ansicon/) to use colo
ur on Windows

警告は出るがエラーにはならず、スペック出力は(コンソール配色を特にいじっていないので)黒地白文字で出てくる。

ANSICON

ANSICON ってなんだろうと言うことで、http://adoxa.110mb.com/ansicon/ を見に行く、Winndowsのコンソール用の ANSIエスケープ定義のようだ、ダウンロードして見る。
はじめどうやって動かすのか、インストールするのか混乱した。特にインストールとかいうことなく、単にコンソールで所要の ansicon.exe を実行すればいい模様。そうするとまたコンソールエコーが返ってくるので、そこで rspec -c とか rake spec とかすると色付きの出力になる。
とは言え、毎回フルパスで指定するのも大変だし、今回は 64bit環境なので \x64 方面のものを使ったが、\x86 方面と間違えないようにしないといけない(いやまあ動くみたいだけど)。

readme.txt や ansicon /? を見ると、パスを通すか或いは /iオプション(/I)でインストールとある。どちらもちょっと大仕掛けな感じで気が引ける、大体 Windows7 で AutoRun ってありなのか。
今のところ RSpec での使用しか考えていないので、Ruby環境で使えれば良い。ので Ruby のところにバッチファイルを置くことにする。C:\Program Files (x86)\ruby-1.8\bin に ansicon.bat 。今この手の場所では直接ファイルを新規作成出来ないの注意、別の場所で作っておいて持ってくる。バッチファイルの内容は一行だけ。

C:\<展開した場所>\ansi140\x64\ansicon.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

%変数注意、それこそ /? とかのオプションを捕るように。
これで、ruby console 開いたら RSpec 実行前に一度 ansicon 実行すれば以後スペック出力に色が付くように。

RSpec::Core::Formatters::BaseTextFormatter

さて色が付くようになると、前にも書いたRSpec on Rails の色 - Rubyとか Illustratorとか SFとか折紙とか ように、Windowsのコンソールでの黒地に赤文字はちょっと見難い、反転とか強調とか考えよう。具体的にどうするかは前に書いたときとは考え方が変わっている。spec_helper.rb にて BaseTextFormatter の配色を直接変更する。

class RSpec::Core::Formatters::BaseTextFormatter
  def red(text); color(text, "\e[1;41m") end # "\e[1;31m" "\e[41m" "\e[1;41m"
  #def green(text); color(text, "\e[1;42m") end # "\e[1;32m" "\e[42m" "\e[1;42m"
end # class RSpec::Core::Formatters::BaseTextFormatter

コメントにしてるエスケープシークエンスは夫々の色で反転とか強調色なんで適宜。greeen は green だしまあコメントアウト。yellow はどうしようかな、まだ近くにペンディング無いのでちゃんと考えてない。
前に書いたときとは colorメソッドの綴りが違っていてちょっと躓いた(前は colour だった模様)。