Windows環境のrailsでautotestを使う

railsでautotestを使用するとプログラムやテストパターンが更新されたタイミングで自動的にテストを行ってくれます。最近autotest-railsがZenTestから分離されたみたいでインストールにはまってしまいました。

ここではWindows環境のrailsでautotestを使いコンソールに出力される情報に赤と緑の色をつけるところまでを説明してみます。

必要なパッケージのインストール

スタートメニューの「RubyGems Package Manager」を使用して必要なパッケージを一式インストールします。

gem install redgreen win32console ZenTest autotest-rails
gem install gem instal ZenTest -v=4.0.0

なぜZenTestのVersion4.0.0をインストールするかというとautotest用のプラグインが最新のバージョンには存在しないからです。

autotest.rbの修正

インストールが完了したら自分のrailsのプロジェクトのディレクトリでおもむろにautotestと入力してみましょう。

C:\Users\kazuhisa\rails\project>autotest
loading autotest/rails
c:/ruby/lib/ruby/gems/1.8/gems/ZenTest-4.1.4/lib/autotest.rb:179:in `expand_path
': couldn't find HOME environment -- expanding `~/.autotest' (ArgumentError)
        from c:/ruby/lib/ruby/gems/1.8/gems/ZenTest-4.1.4/lib/autotest.rb:179:in
 `initialize'
        from c:/ruby/lib/ruby/gems/1.8/gems/autotest-rails-4.1.0/lib/autotest/ra
ils.rb:7:in `initialize'
        from c:/ruby/lib/ruby/gems/1.8/gems/ZenTest-4.1.4/lib/autotest.rb:122:in
 `new'
        from c:/ruby/lib/ruby/gems/1.8/gems/ZenTest-4.1.4/lib/autotest.rb:122:in
 `run'
        from c:/ruby/lib/ruby/gems/1.8/gems/ZenTest-4.1.4/bin/autotest:55
        from c:/ruby/bin/autotest:19:in `load'
        from c:/ruby/bin/autotest:19

ハイ。落ちましたね。Windows環境なので「~/.autotest」(ホームディレクトリに存在するかもしれない設定ファイル)を見つけに行くことができないわけです。
ここでは直接autotest.rbを修正してしまいます。
C:\ruby\lib\ruby\gems\1.8\gems\ZenTest-4.1.4\lib\autotest.rbを書き込み可能属性に変更してエディタで開いてください。

    #[File.expand_path('~/.autotest'), './.autotest'].each do |f|
    #  load f if File.exist? f
    #end
    #カレントディレクトリの.autotestファイルが存在すれば開くように修正
    f = Dir::getwd + '/.autotest'
    load f if File.exist? f

もうチョイ、スマートな方法があるような気もするけど、まぁいいか。

古いZenTestからredgreen表示用のプラグインをコピー

最新のZenTestのlib/autotestディレクトリにredgreen.rbが存在するか確認してください。
なければ最初にインストールしたVersion4.0.0のZenTestからもってきます。
C:\ruby\lib\ruby\gems\1.8\gems\ZenTest-4.0.0\lib\autotest\redgreen.rbをコピーですよ。

コピーできたら古いZenTestは削除しておきましょう。

gem uninstal ZenTest -v=4.0.0

.autotestの編集

railsのプロジェクトディレクトリにC:\ruby\lib\ruby\gems\1.8\gems\ZenTest-4.1.4\example_dot_autotest.rbをコピーして内容を書き換えます。

# -*- ruby -*-

# require 'autotest/autoupdate'
# require 'autotest/once'
# require 'autotest/rcov'
# require 'autotest/restart'
# require 'autotest/timestamp'

# Autotest::AutoUpdate.sleep_time = o
# Autotest::AutoUpdate.update_cmd = o
# Autotest::RCov.command = o
# Autotest::RCov.pattern = o

require 'autotest/redgreen'
require 'win32console'

最後の2行を追加ですね。
編集が完了したらexample_dot_autotest.rbを.autotestにファイル名を変更してください。

move example_dot_autotest.rb .autotest

autotestを実行してみてください。緑の線が出ましたか?

test_helper.rbの編集

test_helper.rbの頭に次の行を挿入してください。

require 'redgreen'

今度はテスト結果が緑色もしくは赤色で表示されるようになったと思います。

参考元

■autotestを使ってみる - プログラマ憧れプログラマ日記
http://d.hatena.ne.jp/nobyu/20090124/1232812719
↑実際のテスト方法や画面のキャプチャがあってわかりやすいです。