class Rufus::Scheduler::CronJob

Attributes

cron_line[R]

Public Class Methods

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

  super(scheduler, cronline, opts, block)

  @cron_line = opts[:_t] || ::Fugit::Cron.do_parse(cronline)

  set_next_time(nil)
end

Public Instance Methods

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

  @cron_line.brute_frequency
end
check_frequency() click to toggle source
# File lib/rufus/scheduler/jobs_repeat.rb, line 276
def check_frequency

  return if @scheduler.frequency <= 1
    #
    # The minimum time delta in a cron job is 1 second, so if the
    # scheduler frequency is less than that, no worries.

  f = @cron_line.rough_frequency

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

  @cron_line.next_time(time)
end
rough_frequency() click to toggle source
# File lib/rufus/scheduler/jobs_repeat.rb, line 296
def rough_frequency

  @cron_line.rough_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 308
def set_next_time(trigger_time, is_post=false, now=nil)

  return if is_post

  t = trigger_time || now || EoTime.now

  previous = @previous_time || @scheduled_at
  t = previous if ! discard_past? && t > previous

  @next_time =
    if @first_at && @first_at > t
      @first_at
    else
      @cron_line.next_time(t)
    end
end