【问题标题】:Ruby: capturing outputRuby:捕获输出
【发布时间】:2012-10-18 07:54:34
【问题描述】:

为了了解更多关于 Ruby 的信息,我正在查看这篇博文 http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/,其中讨论了不同的命令执行方法,例如 Kernel#exec 和 Kernel#system。他的示例文件有两行代码

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

并且他指出,每当他运行命令时,输出是否被捕获。例如,这里捕获了 STDOUT,但没有捕获 STDERR。

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

但为什么这很重要?输出是否被“捕获”在实际方面有什么区别。我试图在我的 Ruby 书中找到答案,但无济于事。

感谢您的解释。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    作者在您链接的帖子顶部指出了是否捕获输出的重要性:

    [...] 它是由我的 Redmine Github Hook 插件的问题触发的,其中 未记录 STDERR 消息。

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

    如果您还没有,您可能想了解更多关于standard streams 的信息,它决定了您的程序输出的方向。如果您能够有效地操作标准流,您可以捕获程序的输出并将其重定向到适当的位置,例如错误转到日志文件,生成的数据输出到数据文件,用户可能希望看到的状态更新转到屏幕等。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      相关资源
      最近更新 更多