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

Returns a new instance of Entry.



16
17
18
19
20
21
22
23
24
# 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]
end

Instance Attribute Details

#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

Returns:

  • (Boolean)


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

def due?
  Time.now > at
end

#future?Boolean

Returns:

  • (Boolean)


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

def future?
  ! due?
end

#max_overdueObject



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

def max_overdue
  Threasy.config.max_overdue
end

#once?Boolean

Returns:

  • (Boolean)


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

def once?
  ! repeat?
end

#overdueObject



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

def overdue
  Time.now - at
end

#removeObject



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

def remove
  schedule.remove_entry self
end

#repeat?Boolean

Returns:

  • (Boolean)


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

def repeat?
  !! repeat
end

#times_remaining?Boolean

Returns:

  • (Boolean)


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

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

#work!Object



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

def work!
  return unless times_remaining?

  if once? || overdue < max_overdue
    work.enqueue job
    self.times -= 1 if times
  end

  self.at = at + repeat if repeat?
end