我的测试中的一些宝石将$stdout
设置为dev/null
。有$stdout
更改后是否有办法提出错误?或者是否有其他方法来跟踪改变它的方式?
更新:对于可能有类似问题的任何人 - 问题是ActiveSupport的quietly
和silence_stream
方法不是线程安全的。在这种情况下,activerecord-session_store
是令人讨厌的宝石,请参阅https://github.com/rails/activerecord-session_store/pull/22
答案 0 :(得分:5)
set_trace_func proc { |event, file, line, id, binding, classname|
if $stdout != STDOUT
STDOUT.puts "$stdout changed at #{file}:#{line}"
exit
end
}
嗯。我想这实际上是改变之后的行,技术上......如果你关心,你可以记住每个跟踪步骤中的前一个文件/行,然后打印出来。