- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby/autotest

はじめに Edit

logディレクトリにログを出力している状態でautotestを動かすと、
無限実行されて、テストが延々と続くのを回避する方法

回避する方法 Edit

以下のような.autotestをスクリプト直下(autotestを実行するところ)に置いておけばOK。
ZenTest/lib/autotest/rails.rbとその他.autotestを参考にしました。

1
2
3
4
5
6
7
8
9
# ./.autotest
puts "start .autotest"
Autotest.add_hook :initialize do |autotest| 
  autotest.instance_eval do
    puts "Autotest.add_hook initialize"
    add_exception %r{^\./(?:db|doc|log|public|script|tmp|vendor)}
  end
end
puts "finished .autotest"

解説

  • .autotestファイルは、autotestやautospecコマンド時に自動でロードされる
  • Autotest.add_hook :initialize のブロック内で初期化処理時の追加したい処理を追加できる
  • autotest.instance_eval での add_exception は、autotest.add_exception と同じ意味(DRY!!=instance_evalは他の言語のwith構文に近い感じに使える=使いどころ間違えるとバグりそう)
    この場合、autotest.add_exception の代わりに add_exception をどんどん追加していくことで、除外項目を増やせますよ、と
  • add_exception の引数である %r{〜〜} は 正規表現の%記法
    正規表現中に "/"を入れたかったので、通常の正規表現リテラルを避けた形です。
    ※ "/"記法なら /^\.\/(?:db|doc|log|public|script|tmp|vendor)/ になってたかと
    なので、%r|〜〜| とか%r!〜〜! とか自分の見やすい記法を選ぼう(どれも正規表現で解釈される)
  • ./db や ./doc や ./log ./public ./script ./tmp ./vendor 各ディレクトリを除外設定してる(正規表現の中身参照)
  • putsはちゃんと.autotest読まれたかとか、add_hookが機能しているか毎回わかるように書いてある(printfデバッグというよりは常時状態確認するため)

間違っているところあるかもなので注意


No comment. Comments/Ruby/autotest/logやtmpディレクトリを監視から除外する方法?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-07-14 Wed 18:49:47 JST (3434d)