Sha256: aaaaab8057c4b83fca5dcbfe0cf1faf7641f7220800916780f68abe89de91f29

Contents?: true

Size: 716 Bytes

Versions: 1

Compression:

Stored size: 716 Bytes

Contents

# frozen_string_literal: true

module ClockworkMocks
  class ClockworkTask
    def initialize(interval, name, hash, block)
      @interval = interval
      @name = name
      @hash = hash || {}
      @block = block

      @due = calc_due
    end

    def reset!
      @due = Time.now
      @due = calc_due
    end

    def perform
      @block.call
      @due = calc_due
    end

    attr_reader :due

    private

    def calc_due
      ndue = Time.at((due || Time.now).to_f + @interval)

      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
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
clockwork-mocks-1.0.0 lib/clockwork_mocks/clockwork_task.rb