class ClockworkMocks::ClockworkTask

Attributes

due[R]
name[R]

Public Class Methods

new(interval, name, hash, block) click to toggle source
# File lib/clockwork_mocks/clockwork_task.rb, line 5
def initialize(interval, name, hash, block)
  @interval = interval
  @name = name
  @hash = hash || {}
  @block = block

  @due = calc_due
end

Public Instance Methods

perform(handler = nil) click to toggle source
# File lib/clockwork_mocks/clockwork_task.rb, line 19
def perform(handler = nil)
  if @block
    @block.call
  elsif handler
    handler.call(@name, Time.now.utc)
  end
  @due = calc_due
end
reset!() click to toggle source
# File lib/clockwork_mocks/clockwork_task.rb, line 14
def reset!
  @due = Time.now.utc
  @due = calc_due
end

Private Instance Methods

calc_due() click to toggle source
# File lib/clockwork_mocks/clockwork_task.rb, line 32
def calc_due
  ndue = Time.at((due || Time.now.utc).to_f + @interval).utc

  return ndue unless @hash[:at]

  at_split = @hash[:at].split(':').map(&:to_i)
  new_due = ndue.change(hour: at_split[0], minute: at_split[1])

  new_due <= ndue ? new_due : (new_due - 1.day)
end