Class: Timeloop

Inherits:
Object
  • Object
show all
Extended by:
Helper
Defined in:
lib/timeloop.rb,
lib/timeloop/version.rb

Overview

Execute a block of code periodically. The runtime of the block is taken in to account so a delay in one run does not impact the start times of future runs.

Defined Under Namespace

Modules: Helper

Constant Summary collapse

VERSION =
'2.0.0'

Instance Method Summary collapse

Methods included from Helper

every

Instance Method Details

#loopObject

Runs provided block periodically.

Yields Integer index of the iteration to the provide block every ‘period`.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/timeloop.rb', line 11

def loop
  i = -1
  super() do
    run_started_at = Time.now
    i += 1
    logger.debug("#{to_s}: starting #{i}th run")
    yield(i) if block_given?

    break if i+1 >= max

    sleep til_next_start_time(Time.now - run_started_at)
           .tap{|s| logger.debug "#{to_s}: sleeping #{s} seconds until next run" }
  end
end

#to_sObject

Returns string representation of self,



27
28
29
30
31
# File 'lib/timeloop.rb', line 27

def to_s
  ["#<Timeloop period=#{period}",
   max < Float::INFINITY ? ", max=#{max}" : "",
   ">"].join
end