class Rufus::Scheduler::EveryJob

Recurring job with a certain frequency.

Attributes

frequency[R]

The frequency, in seconds, of this EveryJob

Public Class Methods

new(scheduler, t, params, &block) click to toggle source
Calls superclass method Rufus::Scheduler::Job.new
# File lib/rufus/sc/jobs.rb, line 248
def initialize (scheduler, t, params, &block)
  super
  determine_frequency
  determine_at
end

Public Instance Methods

trigger() click to toggle source

Triggers the job (and reschedules it).

Calls superclass method Rufus::Scheduler::Job#trigger
# File lib/rufus/sc/jobs.rb, line 256
def trigger

  schedule_next

  super

  #unschedule if @params[:dont_reschedule]
    # obsolete
end

Protected Instance Methods

determine_at() click to toggle source
# File lib/rufus/sc/jobs.rb, line 274
def determine_at

  return unless @frequency

  @last = @at
    # the first time, @last will be nil

  @at = if @last
    @last + @frequency
  else
    if fi = @params[:first_in]
      Time.now.to_f + Rufus.duration_to_f(fi)
    elsif fa = @params[:first_at]
      Rufus.at_to_f(fa)
    else
      Time.now.to_f + @frequency
    end
  end
end
determine_frequency() click to toggle source
# File lib/rufus/sc/jobs.rb, line 268
def determine_frequency

  @frequency = @t.is_a?(Fixnum) || @t.is_a?(Float) ?
    @t : Rufus.parse_duration_string(@t)
end
schedule_next() click to toggle source

It's an every job, have to schedule next time it occurs…

# File lib/rufus/sc/jobs.rb, line 296
def schedule_next

  determine_at

  @scheduler.send(:add_job, self)
end