2011-03-24 10 views
7

Jeśli uruchomić ten kod:czy% x [] przechwytuje wszystkie dane wyjściowe?

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

uzyskać ten rezultat

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

output is == 

ale chcę się komunikat o błędzie z SVN wewnątrz zmiennej svn_output. Czy to jest możliwe?

Odpowiedz

11

chcesz przekierować stderr do stdout:

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

Dokładnie :-) dziękuję – Radek

+5

Albo użyj [Open3] (http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc /index.html), jeśli chcesz odróżnić 'stdout' od' stderr'. –

+0

pokonałeś mnie! – Gishu

Powiązane problemy