2011-02-03 13 views
5

RSpec 2.0より前のバージョンでは、カラー出力をlessにパイプするか、ファイルにリダイレクトすることができました。これを行うには、単にRSPEC_COLOR環境変数をtrueに設定する必要があります。しかし、フレームワークの新しいメインバージョンでは、この変数は出力タイプ(カラーまたはモノクローム)を定義するために停止しています。 RSpec 2.0以降の色をパイプまたはリダイレクトする方法はありますか?RSpec。パイプされた出力やリダイレクトされた出力をどのように色づけるのですか?

ありがとうございました。

Debian GNU/Linux 5.0.7;

Ruby 1.9.2;

RSpec 2.4.0。


を更新しました

私は自分で答えを見つけました。

効果を得るには、tty設定オプションを使用する必要があります。

は、ここに例を示します

# spec/spec_helper.rb 

RSpec.configure do |config| 
    config.tty = true 
end 

答えて

1

sourcesで見ることによって、color_enabled設定オプションは、RSpecの設定のモジュールに今あるようです。ただし、出力がttyに行われていない場合は、color is disabledとなります。つまりので

私の提案はcolor_enabled = trueを設定し、サルにRSpecの設定モジュールにパッチを適用することであろうttyに出力していない場合でも動作します:

module RSpec 
    module Core 
    class Configuration 
     def color_enabled 
     true 
     end 
    end 
    end 
end 

これは、しかし、素敵な方法ではありません。これもテストされておらず、通常、テストは専用のコマンドラインツールを介して実行されるため、rspecのパッチ適用は最も簡単な方法ではありません。

メンテナにバグレポートを開き、force_color_enabledオプションを要求することはできますか?おそらく実装するのは非常に速いでしょう...

Good Luck and Happy Coding!

+0

ありがとうございます、** Oct **。私は自分でそれに取り組んでいます。私の答えの**更新**セクションを参照してください。 – Shamaoke

+0

ちなみにGithubには[問題](https://github.com/rspec/rspec-core/issues/326)が公開されていましたが、私は答えがなく、自分で解決策を見つけなければなりませんでした。 – Shamaoke

+0

この設定でうまくいきます!追加するだけで、関連する[問題](https://github.com/rspec/rspec-core/issues/665)をこちらに追加してください。 – EricC

1

それは同じくらい簡単です:問題の答えが正しいものである

# spec/spec_helper.rb 

RSpec.configure do |config| 
    config.color_enabled = true 
end 
+1

** Sam **、出力の色付け方法は問題ではありませんでしたが、出力をページャーやファイルにリダイレクトするときにカラータグを保存する方法については問題がありました。 'config.color_enabled = true'を見てください。 '$ rspec spec/| less#=> monochrome'ですが、 'config.tty = true; config.color_enabled = true'; '$ rspec spec/|少ない#=>色。 – Shamaoke

1

# spec/spec_helper.rb 

RSpec.configure do |config| 
    config.tty = true 
end 

その後rspec | grep --color="never" something着色を保持します。

関連する問題