Class: Threasy::Schedule::Entry

Inherits:
Object
  • Object
show all
Defined in:
lib/threasy/schedule/entry.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(job, options = {}) ⇒ Entry



16
17
18
19
20
21
22
23
24
25
# File 'lib/threasy/schedule/entry.rb', line 16

def initialize(job, options = {})
  self.schedule = options.fetch(:schedule) { Threasy.schedules }
  self.work     = options.fetch(:work) { schedule.work }
  self.job      = job
  self.repeat   = options[:every]
  seconds       = options.fetch(:in) { repeat || 60 }
  self.at       = options.fetch(:at) { Time.now + seconds }
  self.times    = options[:times]
  self.args     = options.fetch(:args) { [] }
end

Instance Attribute Details

#argsObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def args
  @args
end

#atObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def at
  @at
end

#jobObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def job
  @job
end

#repeatObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def repeat
  @repeat
end

#scheduleObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def schedule
  @schedule
end

#timesObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def times
  @times
end

#workObject

Schedule Entry

Represents a single entry in a schedule.

Class is responsible for keeping track of the timing and recurrance of a the supplied ‘job` object.

Entry instances are usually created by a ‘Threasy::Schedule` instance and should not be created by hand.

See ‘Threasy::Schedule#add`



14
15
16
# File 'lib/threasy/schedule/entry.rb', line 14

def work
  @work
end

Instance Method Details

#due?Boolean



35
36
37
# File 'lib/threasy/schedule/entry.rb', line 35

def due?
  Time.now > at
end

#future?Boolean



39
40
41
# File 'lib/threasy/schedule/entry.rb', line 39

def future?
  ! due?
end

#max_overdueObject



47
48
49
# File 'lib/threasy/schedule/entry.rb', line 47

def max_overdue
  Threasy.config.max_overdue
end

#once?Boolean



31
32
33
# File 'lib/threasy/schedule/entry.rb', line 31

def once?
  ! repeat?
end

#overdueObject



43
44
45
# File 'lib/threasy/schedule/entry.rb', line 43

def overdue
  Time.now - at
end

#removeObject



64
65
66
# File 'lib/threasy/schedule/entry.rb', line 64

def remove
  schedule.remove_entry self
end

#repeat?Boolean



27
28
29
# File 'lib/threasy/schedule/entry.rb', line 27

def repeat?
  repeat && times_remaining?
end

#times_remaining?Boolean



60
61
62
# File 'lib/threasy/schedule/entry.rb', line 60

def times_remaining?
  times.nil? || times > 0
end

#work!Object



51
52
53
54
55
56
57
58
# File 'lib/threasy/schedule/entry.rb', line 51

def work!
  if once? || overdue < max_overdue
    work.enqueue(job, *args) if times_remaining?
    self.times -= 1 unless times.nil?
  end

  self.at = at + repeat if repeat?
end