class Rufus::Scheduler::EveryJob

Attributes

frequency[R]
resume_discard_past[RW]

Public Class Methods

new(scheduler, duration, opts, block) click to toggle source
Calls superclass method Rufus::Scheduler::RepeatJob::new
# File lib/rufus/scheduler/jobs_repeat.rb, line 176
def initialize(scheduler, duration, opts, block)

  super(scheduler, duration, opts, block)

  @frequency = Rufus::Scheduler.parse_in(@original)
  @discard_past = opts[:discard_past]

  fail ArgumentError.new(
    "cannot schedule #{self.class} with a frequency " +
    "of #{@frequency.inspect} (#{@original.inspect})"
  ) if @frequency <= 0

  set_next_time(nil)
end

Public Instance Methods

check_frequency() click to toggle source
# File lib/rufus/scheduler/jobs_repeat.rb, line 191
def check_frequency

  fail ArgumentError.new(
   "job frequency (#{@frequency}s) is higher than " +
   "scheduler frequency (#{@scheduler.frequency}s)"
  ) if @frequency < @scheduler.frequency
end
next_time_from(time) click to toggle source
# File lib/rufus/scheduler/jobs_repeat.rb, line 199
def next_time_from(time)

  time + @frequency
end

Protected Instance Methods

set_next_time(trigger_time, is_post=false, now=nil) click to toggle source
# File lib/rufus/scheduler/jobs_repeat.rb, line 206
def set_next_time(trigger_time, is_post=false, now=nil)

  return if is_post

  n = now || EoTime.now

  return @next_time = @first_at \
    if @first_at && (trigger_time == nil || @first_at > n)

  dp = discard_past?

  loop do

    @next_time = (@next_time || n) + @frequency

    break if dp == false
    break if @next_time > n
  end
end