2011-03-24 8 views
7

私はこのコードを実行する場合:%x []はすべての出力をキャッチしますか?

svn_output = %x[svn update /Users/radek/Sites/db2.rft -r 11105 --force ] 
puts 
puts " output is =#{svn_output}=" 

を、私はこの結果に

svn: Working copy '/Users/radek/Sites/db2.rft' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 

output is == 

を取得するが、私は、変数svn_output内側のsvnからのエラーメッセージが欲しいです。それは可能ですか?

答えて

11

あなたがstdoutに標準エラー出力をリダイレクトする:

svn_output = %x[svn update /Users/radek/Sites/db2.rft -r 11105 --force 2>&1] 
puts 
puts " output is =#{svn_output}=" 
+0

まさにあなた – Radek

+5

に感謝または[のopen3](http://www.ruby-doc.org/stdlib/libdoc/open3/rdocを使用:-) /index.html)を使って、 'stdout'と' stderr'を区別する必要があります。 –

+0

あなたはそれに私を打つ! – Gishu

関連する問題