沉默一个特定的警卫插件?

时间:2014-11-14 08:31:47

标签: ruby guard yard

我使用guard-yard自动运行YARD。然而它的输出真的很烦人,并且很难读取RSpec输出(这更有趣)。

guard 'yard' do
  watch(%r{app/.+\.rb})
  watch(%r{lib/.+\.rb})
  watch(%r{ext/.+\.c})
end

问。如何使这个Guard插件的输出静音?

4 个答案:

答案 0 :(得分:3)

码材工具输出可以重定向。 AFAIK您无法禁用所有通知。

FWIW:这是我在Guardfile设置码的方式来隐藏部分输出:

guard :yard, stdout: 'log/yard.log', stderr: 'log/yard_error.log' do watch(%r{app/.+\.rb}) watch(%r{lib/.+\.rb}) end

答案 1 :(得分:1)

我遇到了同样的问题而且我使用了interctor:off吃了Guardfile的开头,所以你的代码应该是这样的:

interactor :off
guard 'yard' do
  watch(%r{app/.+\.rb})
  watch(%r{lib/.+\.rb})
  watch(%r{ext/.+\.c})
end

要在后台运行它并且在控制台中没有收到任何输出,您应该运行命令:

bundle exec guard <options> >/dev/null 2>&1 &

答案 2 :(得分:1)

选项1:如果测试通过,您可能只想运行Yard:

group :stuff, halt_on_fail: true do
  guard :rspec, cmd: 'bundle exec rspec' do
    # (stuff for guard-rspec template goes here
  end

  guard :yard do
    watch(%r{app/.+\.rb})
    watch(%r{lib/.+\.rb})
    watch(%r{ext/.+\.c})
  end
end

或......

选项2:当您专注于RSpec时,您可能更愿意跳过院子:

guard :rspec, cmd: 'bundle exec rspec' do
  # (stuff for guard-rspec template goes here
end

guard :yard do
  watch(%r{app/.+\.rb})
  watch(%r{lib/.+\.rb})
  watch(%r{ext/.+\.c})
end

并限制后卫只运行rspec bundle exec guard -g rspec

选项3:使用scope命令在组/插件之间切换

您还可以使用Pry交互器中的scope命令告诉Guard您对运行感兴趣的内容,例如

# tells guard to just run rspec
[1] guard(main)> scope rspec
[2] RSpec guard(main)>

# or just yard
[1] guard(main)> scope yard
[2] Yard guard(main)>

# or everything again
[1] guard(main)> scope default
[2] Default guard(main)>

答案 3 :(得分:0)

这是一个重要的解决方案,但它确实有效。

# In your Guardfile    
guard 'yard' do
...
end

# This must after the `guard 'yard' block`, or the Guard::Yard constant won't be
# defined yet.
class Guard::Yard::Server
  def UI.info(*args); end
end

编辑:没关系!这会停止info语句,但不会停止打印机架服务器信息。