簡體   English   中英

如何使用ruby實時捕獲輸出?

[英]How to Capture Output in realtime using ruby?

在我的項目中,我必須在遠程計算機上執行命令。 而且我還必須實時捕獲和顯示命令的輸出。 例如,如果我在遠程計算機上運行“ dir”命令,那么我應該顯示執行該命令需要多少分鍾(例如剩余2分鍾)。

您可以嘗試使用ruby-progressbar gem並將輸出放置在可以讀取的文件中

require 'ruby-progressbar'
p = ProgressBar.create(:format => '%a %B %p%% %t')
=> #<ProgressBar:0/100>           

 def test(p)
    d = Dir.new('ank')
    d.each do |file|
      sleep 4
      puts file
      p.increment
    end
end
=> nil 


1.9.3-p545 :029 > test(p)
.
..me: 00:00:06 =1% Progress                                                                                                    
bare:                                          00:00:10 == 2% Progress                                                                                                  
baze:                                        00:00:14 === 3% Progress                                                                                                
fooe:                                       00:00:18 ==== 4% Progress                                                                                               
 => #<Dir:ank> =====                                                                                                5% Progress

看看這個 ,我想這回答了你的問題,至少一

但是我不確定如何輕松地為您提供該命令的執行時間

您可能需要先運行所有可能的命令來估計它們的執行時間,然后將該數據放入某個存儲中(例如數據庫)。

或者,您可以創建表來存儲該時間並在每次執行命令后擴展該表,因此,當用戶嘗試運行該表中已存在的命令時,可以給用戶提供上次運行時間的估計時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM