class Conscriptor::ProgressReporter
Attributes
count[R]
Public Class Methods
new(total:, name: nil, report_every: 1, logger: nil)
click to toggle source
# File lib/conscriptor/progress_reporter.rb, line 7 def initialize(total:, name: nil, report_every: 1, logger: nil) @name = name @total = total @report_every = report_every || 1 @logger = logger || simple_logger @count = 0 @start_time = Time.now end
Public Instance Methods
done?()
click to toggle source
# File lib/conscriptor/progress_reporter.rb, line 30 def done? @count >= @total end
inc(name: @name, by: 1)
click to toggle source
# File lib/conscriptor/progress_reporter.rb, line 16 def inc(name: @name, by: 1) @count += by if @count % @report_every == 0 # rubocop:disable Style/GuardClause percent_complete = 100 * @count / @total time_spent = Time.now - @start_time time_left = @total * time_spent / @count - time_spent @logger.info "#{name} #{@count}/#{@total} (#{percent_complete}%)" \ " #{(time_spent / 60).round(1)}m spent," \ " #{(time_left / 60).round(1)}m to go-ish" end end