No commit activity in last 3 years
No release in over 3 years
Do something to a collection of items and see how long it is going to take. Useful for long-running Rake tasks.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
~> 0.10
~> 10.4
~> 3.4
~> 0.35
~> 0.11
~> 0.8
 Project Readme

Duration Estimate Build Status Code Climate Gem Version

Do something to a collection of items and see how long it is going to take. Useful for long-running Rake tasks.

Usage

items = 0..10000 # Some data set.

DurationEstimate.each(items) do |item, e|
  print "\r#{DurationEstimate::TerminalFormatter.format(e)}"

  # Do something time consuming with item.
  sleep 0.001
end

puts

You can specify the collection size if you are using some kind of ORM that does not respond to :size method.

media = Media
  .where { created_at > Time.parse('some time') }
  .order(:created_at)

File.open('missing-media.log', 'w') do |log|
  DurationEstimate.each(media, size: media.count) do |medium, e|
    print "\r#{DurationEstimate::TerminalFormatter.format(e)}"

    unless medium.on_s3?
      log.puts medium.id
      log.fsync # Write changes now, be able tail the file.
    end

    sleep 2 # Don't overload AWS S3
  end
end

puts

This is going to re-print a line with something like this:

 1/11 (  9.09 %) -, -
 2/11 ( 18.18 %) 11:47:29, 00:00:34
 3/11 ( 27.27 %) 11:47:30, 00:00:31
 4/11 ( 36.36 %) 11:47:31, 00:00:27
 5/11 ( 45.45 %) 11:47:31, 00:00:23
 6/11 ( 54.55 %) 11:47:30, 00:00:19
 7/11 ( 63.64 %) 11:47:30, 00:00:15
 8/11 ( 72.73 %) 11:47:30, 00:00:11
 9/11 ( 81.82 %) 11:47:30, 00:00:07
10/11 ( 90.91 %) 11:47:30, 00:00:03
11/11 (100.00 %) 11:47:30, 00:00:00

Installation

Add this line to your application's Gemfile:

gem 'duration_estimate'

And then execute:

$ bundle

Or install it yourself as:

$ gem install duration_estimate

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release to create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it (https://github.com/ollie/duration_estimate/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request