Давайте инициализируем массив случайными числами.
Теперь давайте создадим 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
предлагает следующие флаги для форматирования .
Я не вижу никаких вариантов размещения заполнителей или получения значений в нем.