如何临时关闭 Ruby 中的标准输出
ruby
在写 rspec 测试时, 由于完美情怀作怪, 难免需要去掉无用的标准输出. 如果在执行
rspec .
时, 输出
.................................................
这种感觉太舒服了.
但是, 我们不能简单使用
STDOUT.close
这样会导致标准输出异常. 我们最好的办法是将标准输出重定向到空文件中, 使用后再恢复. 具体的代码如下:
def no_stdout
windows = RUBY_PLATFORM =~ /mswin|mingw32/
nullfile = windows ? "NUL:" : "/dev/null"
origin = STDOUT.clone
STDOUT.reopen( File.open(nullfile, "w+") )
yield
ensure
STDOUT.reopen(origin)
end
no_stdout do
puts 'hello'
end
puts 'hello2'
发表于 2013.08.15
© 自由转载 - 非商用 - 非衍生 - 保持署名
上一篇下一篇