Sooey

2013-05-17 00:00:59 +0900

rake specでの冗長な出力を止める方法。

rspec-railsを組み込んだRailsプロジェクトでrake specを実行すると、以下のように(specタスクが依存している)test:prepareタスクの出力や、実行するspecファイル名などがずらずらと表示されます。

$ bundle exec rake spec
SET
SET
CREATE EXTENSION
COMMENT
(snip)
INSERT 0 1
INSERT 0 1
INSERT 0 1
/Users/juno/.rbenv/versions/2.0.0-p195/bin/ruby -S rspec ./spec/controllers/admin/castings_controller_spec.rb ./spec/controllers/admin/characters_controller_spec.rb
........................................................***...

これを黙らせてシンプルな出力にするには、Rakefileあたりに以下のコードを記述しておきます。

これによって、デフォルトのspecタスクをいったんクリアし、

  • rake spec前にtest:prepareを実行しなくなる
  • 実行するspecファイル名などを表示しなくなる

という挙動が再定義されます。

test:prepareが暗黙的には実行されなくなるため、あらかじめ実行しておきます。

$ bundle exec rake db:create RAILS_ENV=test
$ bundle exec rake test:prepare

そしてspecタスクを実行すると、余計な出力のない状態でテスト結果が表示されます。

$ bundle exec rake spec
........................................................***...

specタスクをクリアしないでverbose = falseを設定するいい方法はないかな…。