3

Rubyについてもっと学ぶために、このブログ投稿http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/を見て、さまざまなコマンド(Kernel#execやKernelなどの実行方法)について説明しています。 #システム。彼のサンプルファイルには2行のコードがあります

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

そして彼は、コマンドを実行するたびに、出力がキャプチャされているかどうかに注意します。たとえば、ここではSTDOUTがキャプチャされますが、STDERRはキャプチャされません。

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

しかし、なぜこれが重要なのでしょうか。出力が「キャプチャ」されているかどうかの実際的な違いは何ですか。私はRubyの本でこれに対する答えを見つけようとしましたが、役に立ちませんでした。

説明ありがとうございます。

4

1 に答える 1

2

著者は、リンクする投稿の上部に出力がキャプチャされるかどうかの重要性を指摘しています。

[...]STDERRメッセージがログに記録されないRedmineGithubHookプラグインの問題によってトリガーされました。

作者は、stderrに書き込まれたエラーメッセージが「キャプチャ」されてプログラムのログファイルに記録されていないことを発見したようです。これにより、これらのエラーの診断がより困難になった可能性があります。

まだ読んでいない場合は、プログラムの出力がどこに向けられるかを決定する標準ストリームについてもう少し学びたいと思うかもしれません。標準ストリームを効果的に操作できる場合は、プログラムからの出力をキャプチャして適切な場所にリダイレクトできます。たとえば、エラーはログファイルに送られ、生成されたデータはデータファイルに出力され、ステータスの更新はユーザーが見たいと思うかもしれません。画面などに移動します。

于 2012-10-28T23:52:18.630 に答える