たのもう
Rake のタスク実行時に出力されるコマンド…
$ bundle exec rake spec /path/to/.rbenv/versions/2.3.0/bin/ruby -I/path/to/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib:/path/to2/vendor/bundle/ruby/2.3.0/gems/rspec-support-3.5.0/lib /path/to/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb ↑ ↑ これの出力を止めたい! ec2 'dev' should be stopped should have iam instance profile "xxxxxxxx" should have security group "xxxxxxxxx"
実行されるコマンド /path/to/.rbenv/versions/2.3.0/bin/ruby...
の出力を止めたいのである。
技あり
以下のように書けば良かった。
require 'rspec/core/rake_task' RSpec::Core::RakeTask.new do |t| t.verbose = false end task :default => :spec
肝は t.verbose = false
ですな。
実際に実行すると以下のように出力される。
$ bundle exec rake spec ec2 'dev' should be stopped should have iam instance profile "xxxxxxxx" should have security group "xxxxxxxxx"
有効
ちなみに、Rake タスク内でシェルを実行する場合には以下のように書く。
namespace :foo do desc 'demo' task :bar do sh "echo 'bar'", verbose: false end end
肝は verbose: false
ですな。
実際に実行すると以下のように出力される。
$ bundle exec rake foo:bar bar
もしくは、コマンドラインオプションで以下のように実行することでも出力を抑制出来る。
$ bundle exec rake --quiet foo:bar $ bundle exec rake --silent foo:bar
--quiet
と --silent
の違いはなんですか。
$ bundle exec rake --help | egrep 'quiet|silent' -q, --quiet Do not log messages to standard output. -s, --silent Like --quiet, but also suppresses the 'in directory' announcement.
以下のように --silent
は ‘in directory’ の出力も抑制するとのこと。
bash-3.2$ mkdir tmp && cd tmp bash-3.2$ bundle exec rake --quiet -T (in /path/to/sandbox/rake-demo) rake foo:bar # demo bash-3.2$ bundle exec rake --silent -T rake foo:bar # demo
ありがとうございました!
- https://github.com/rspec/rspec-core/blob/master/lib/rspec/core/rake_task.rb#L48-L50
- https://docs.ruby-lang.org/ja/latest/library/rake.html