我认为这是一个简单的问题但无法找到解决方案。我将rubd脚本的stdout和stderr重定向到'puts',有时将错误(!)重定向到这样的日志文件中:
bundle exec rake import:long_task --trace >& log/import.log &
但似乎没有实时将puts
刷新到文件中,当它获得异常时,它会将回溯放在顶部import.log
中。所以,这不是完美的调试,但它的工作原理。
如何将实时脚本的输出实时重定向到文件,以便在没有重定向的情况下直接在终端中启动它,看看我会看到的确切内容?
使用:Ruby 1.9.2,Rails 3.2,FreeBSD和csh shell。
答案 0 :(得分:6)
STDOUT.sync = true
如果您不想每次flush
答案 1 :(得分:0)
我不确定我是否完全理解你的问题,但你考虑过使用:
$stdout.puts "something on /dev/stdout"
$stdout.flush
$stderr.puts "something on /dev/stderr"
$stderr.flush
有关详细信息,请参阅IO#flush documentation。