让我们用随机数初始化一个数组。现在让我们创建一个ProgressBar
,其中所有数字的总和作为其大小。我们可以轻松遍历所有数字并使用每个数字递增进度条,这为我们提供了非常简洁和精确的进度:
require 'ruby-progressbar'
items = Array.new(100) { rand 1..10 }
progress_bar = ProgressBar.create total: items.sum, format: '%a %e %P% Processed: %c from %C items'
items.each do |item|
sleep item / 100.0
progress_bar.progress += item
end
但是,用户有兴趣查看在进度持续时处理了多少项目而不是项目的加权成本。现在我们展示Processed: 270 from 516 items
,它是已处理项目与总和的总和。相反,我想展示Processed: 53 from 100 items
,但留下幕后的总和和现在的增量,否则进度条将不准确。
ruby-progressbar
提供the following flags for formatting。
我没有看到任何放置占位符或在其中获取值的选项。
您可以在格式字符串中自己更新customize format string in realtime while processing并更新值。下面是修改过的脚本,向您展示我的意思:
require 'ruby-progressbar'
items = Array.new(100) { rand 1..10 }
current = 0
count = items.count
progress_bar = ProgressBar.create total: items.sum, format: "%a %e %P% Processed: #{current} from #{count} items"
items.each do |item|
sleep item / 100.0
current += 1
progress_bar.format = "%a %e %P% Processed: #{current} from #{count} items"
progress_bar.progress += item
end
样本输出:Time: 00:00:01 ETA: 00:00:04 29.48% Processed: 27 from 100 items