2010-12-11 4 views
3

autotestを正しく動作させることができないため、私はrails3アプリケーションでwatchrを使用しています。ウォッチャーは素晴らしかったですが、唯一の問題はカラー出力を得ることができないことです。私はこれを私として使用していますwatchr filerailsアプリでwatchrを使用したカラー出力

"rspec spec /"で手動でテストを実行すると、色付きの出力が得られます。しかし、watchrにテストを実行させると(私のファイルの一つを変更することで)、出力はもはやカラーになりません。私は気づく

ことの一つは、この部分が着色出力何とか

def run(cmd) 
    puts(cmd) 
    `#{cmd}` 
end 

通常のを防ぐように見えるということです、watchrは、この(私のwatchrファイル内)

result = run "rake spec" 

を使用してテストを実行します。しかし、私の場合代わりに、次のように私はカラー出力を取得します。

result = system "rake spec" 

唯一の問題は、上記の行はもはや出力に「結果」、ターンマンGrowl通知では、もはや仕事をキャプチャすることはありません。

どのように私は両方の世界の最高を得ることができますか? Growl通知と私のテスト出力はカラーで表示されますか?

def run(cmd) 
    `#{cmd}` 
end 

def run_spec_file(spec) 
    system('clear') 
    puts "Running #{spec}" 
    result = run("bundle exec rspeC#{spec}") 
    puts result 
    growl result.split("\n").last rescue nil 
end 

そしてうなり声ビットがこれです:〜/にいくつかの画像を期待し

def growl(message) 
    growlnotify = `which growlnotify`.chomp 
    unless growlnotify.empty? 
    title = "Test Results" 
    image = message.match(/\s0\s(errors|failures)/) ? "~/.watchr_images/ruby_green.png" : "~/.watchr_images/ruby_red.png" 
    options = "-w -n Watchr --image '#{File.expand_path(image)}' -m '#{strip_ansi(message)}' '#{title}'" 
    run("#{growlnotify} #{options} &") 
    end 
end 

答えて

0

出力がカラーで表示されない場合は、テスト出力を変数に保存する必要があります。私がwatchrをセットアップして "rake spec"の出力を変数に保存する方法は、この変数を "puts"を使って端末に出力します。

def run(cmd) 
    puts(cmd) 
    `#{cmd}` 
end 

# what's called to run my tests 
result = run "rake spec" 

# then output it 
puts result 

これで、情報を色で出力する方法を知る必要があります。

+0

あなたはそれを把握しましたか? – ZMorek

0

は、これは私が私の.watchrファイルにこれらの行、それに沿って何かを持っているかです。 watchr_images /ディレクトリをあなたのdevボックスに、growlnotify binaryもインストールしてください。

EDIT:ああ、あなたのspec.optsファイルに何が入っているかを確認したい場合もあります。--colorが指定されていない可能性があります。

また、growlメソッドのstrip_ansiを使用して、カラーコードを削除して、それがgrowl通知に表示されるようにします。

def strip_ansi(m) 
    m.gsub(/\e\[[^m]*m/, '') 
end 
+0

フィードバックに感謝しますが、私のために色が表示されない理由はありません。うんこは実際に私のためにもうまく働いています。 – Lan

3

私もこの問題に直面しました。

result = run("bundle exec rspec --color --tty #{spec}") 

this threadによるとRSpecのグーグルグループに:ソリューションは、RSpecのコマンドラインからの呼び出しに、--colorに加えて、例えば--ttyオプションを提供することで

--ttyオプションは、出力がファイルではなく端末にストリームされていることをRSpecに伝えることです。この場合、--colorが呼び出されたとしてもカラーコードを出力したくありません。

結果を端末に戻すと、元の色が表示されます。 Growlの出力を解析したい場合は、Bill Turnerが提供するstrip_ansiメソッドを使用してansiカラーコードを取り除きたいでしょう。

希望に役立ちます!

関連する問題