2011-07-22 60 views
0

時,正在運行的Ruby腳本某些部署命令狀獲取系統的輸出()時,在Ruby調用只獲得存儲

system('exam-deploy-all mod.rb >> temp.txt') 

是越來越存儲在temp.txt文件輸出中的一部分輸出的一部分。我想存儲整個輸出,我認爲它不存儲,因爲輸出非常大。 任何人都可以告訴我如何解決這個問題?

回答

1

我不認爲你會失去輸出,因爲有太多的,我猜你的一些輸出是去標準輸出流(你保存在temp.txt),有些是去的標準錯誤(您不在任何地方保存)。你可以試試這個:

system('exam-deploy-all mod.rb > temp.txt 2>errors.txt') 

擺在temp.txt輸出和誤差errors.txt或者其中一種:

system('exam-deploy-all mod.rb > temp.txt 2>1') 
system('exam-deploy-all mod.rb &> temp.txt') 

把他們無論是在temp.txt

另外,如果>> temp.txt將標準輸出附加到temp.txt而不覆蓋已存在的內容,則> temp.txt將用新輸出覆蓋temp.txt

所有這些都假設你使用的是unixish(比如Linux或者OSX)並且你的系統shell是Bourne-ish(比如bash)。

如果你想自己處理所有的I/O而不是依靠system和臨時文件,你也可以切換到Open3。使用Open3是更多的工作,但它可能是值得的,或者它可能不是。

+0

非常感謝朋友......它的工作,自3小時以來,我一直把時間花在這件事上。非常感謝你...:) – wani