2011-07-01 5 views
1

は、私は私のアーカイブにファイルのトンを追加していては、次のようになります。すべてのファイルは私のアーカイブに追加されている、それはそれらをすべて(約10〜15分)を圧縮するために開始された後RubyZip:アーカイブは、プロセス指標

print "Starting ..." 
Zip::ZipFile.open(myarchive, 'w') do |zipfile| 
    my_tons_of_files.each do |file| 
    print "Adding #{file.filename} to archive ... \r" 
    # ... 
    end 
    print "\n Saving archive" 
    # !!! -> waiting about 10-15 minutes 
    # but I want to show the percentage of completed job 
end 

rubyzip gemで実際に何が起こっているのかを示すにはどうすればいいですか(実際はcurrent_file_number/total_files_countのようなパーセンテージを表示します)。

+0

あなたはそれが構築されているとしてzipファイルのサイズに目を維持するためにスレッドを起動すると考えることがありますか?それはあなたに "2342のファイル11を圧縮する"ことはありませんが、何かをしていることをあなたに知らせます。 –

+0

@muは短すぎる、スマートなアイデア、高すぎる – fl00r

答えて

1

あなたは郵便番号を上書きすることができ:: ZipFile.commit:

require 'zip' 
require 'zip/zipfilesystem' 

module Zip 
class ZipFile 

    def commit 
    return if ! commit_required? 
     on_success_replace(name) { 
     |tmpFile| 
     ZipOutputStream.open(tmpFile) { 
      |zos| 

      total_files = @entrySet.length 
      current_files = 1 
      @entrySet.each do |e| 
      puts "Current file: #{current_files}, Total files: #{total_files}" 
      current_files += 1 
      e.write_to_zip_output_stream(zos) 
      end 
      zos.comment = comment 
     } 
     true 
     } 
     initialize(name) 
    end 

end 
end 

print "Starting ..." 
Zip::ZipFile.open(myarchive, 'w') do |zipfile| 
関連する問題