2012-10-28 46 views
3

在我试图了解更多关于Ruby的,我在看这篇博客http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/探讨不同执行命令的方法,例如内核#exec和内核#系统。他的例子文件具有的代码红宝石:捕获输出

#!/usr/bin/env ruby 
puts "out" 
STDERR.puts "error" 

两行,他注意到,每当他运行一个命令,输出是否被捕获或没有。例如,这里捕获了STDOUT,但STDERR不是。

>> `./err.rb` 
err 
=> "out\n" 

但为什么这很重要?实际上,产出是否被“俘获”有什么不同?我试图找到我的红宝石书这个问题的答案,但无济于事。

感谢您的解释。

回答

2

笔者注意到的输出是否被捕获或根本没有的帖子顶你链接的意义:

[...]它是由一个问题,我的管理平台Github上挂钩插件触发其中 STDERR消息未被记录。

听起来像作者发现写入到stderr的错误消息没有被“捕获”并放入程序的日志文件中,这可能使得诊断这些错误变得更加困难。

如果你还没有,你可能想了解多一点关于standard streams,其中确定程序的输出定向。如果你能够有效地操作标准流,你可以从你的程序捕获输出重定向到合适的地方,例如错误去到一个日志文件,生成的数据输出到数据文件时,用户可能希望看到往屏幕状态更新等