Class: Pgbus::Recurring::Task

Inherits:
Object
  • Object
show all
Defined in:
lib/pgbus/recurring/task.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key:, class_name: nil, command: nil, schedule: nil, queue_name: nil, arguments: [], priority: 0, description: nil) ⇒ Task

Returns a new instance of Task.



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pgbus/recurring/task.rb', line 25

def initialize(key:, class_name: nil, command: nil, schedule: nil,
               queue_name: nil, arguments: [], priority: 0, description: nil)
  @key = key
  @class_name = class_name
  @command = command
  @schedule = schedule
  @queue_name = queue_name
  @arguments = arguments || []
  @priority = priority || 0
  @description = description
  @errors = []
end

Instance Attribute Details

#argumentsObject (readonly)

Returns the value of attribute arguments.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def arguments
  @arguments
end

#class_nameObject (readonly)

Returns the value of attribute class_name.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def class_name
  @class_name
end

#commandObject (readonly)

Returns the value of attribute command.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def command
  @command
end

#descriptionObject (readonly)

Returns the value of attribute description.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def description
  @description
end

#keyObject (readonly)

Returns the value of attribute key.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def key
  @key
end

#priorityObject (readonly)

Returns the value of attribute priority.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def priority
  @priority
end

#queue_nameObject (readonly)

Returns the value of attribute queue_name.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def queue_name
  @queue_name
end

#scheduleObject (readonly)

Returns the value of attribute schedule.



8
9
10
# File 'lib/pgbus/recurring/task.rb', line 8

def schedule
  @schedule
end

Class Method Details

.from_configuration(key, **options) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/pgbus/recurring/task.rb', line 11

def self.from_configuration(key, **options)
  options = options.transform_keys(&:to_sym)
  new(
    key: key,
    class_name: options[:class],
    command: options[:command],
    schedule: options[:schedule],
    queue_name: options[:queue],
    arguments: Array(options[:args]),
    priority: options.fetch(:priority, 0).to_i,
    description: options[:description]
  )
end

Instance Method Details

#errorsObject



44
45
46
47
# File 'lib/pgbus/recurring/task.rb', line 44

def errors
  valid? unless defined?(@validated)
  @errors
end

#human_scheduleObject



61
62
63
64
65
# File 'lib/pgbus/recurring/task.rb', line 61

def human_schedule
  return nil unless parsed_schedule

  parsed_schedule.to_cron_s
end

#job_classObject



67
68
69
# File 'lib/pgbus/recurring/task.rb', line 67

def job_class
  class_name&.safe_constantize
end

#next_time(from = Time.now) ⇒ Object



53
54
55
# File 'lib/pgbus/recurring/task.rb', line 53

def next_time(from = Time.now)
  parsed_schedule&.next_time(from)&.to_t
end

#parsed_scheduleObject



49
50
51
# File 'lib/pgbus/recurring/task.rb', line 49

def parsed_schedule
  @parsed_schedule ||= parse_schedule
end

#previous_time(from = Time.now) ⇒ Object



57
58
59
# File 'lib/pgbus/recurring/task.rb', line 57

def previous_time(from = Time.now)
  parsed_schedule&.previous_time(from)&.to_t
end

#to_hObject



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/pgbus/recurring/task.rb', line 71

def to_h
  {
    key: key,
    class_name: class_name,
    command: command,
    schedule: schedule,
    queue_name: queue_name,
    arguments: arguments,
    priority: priority,
    description: description
  }
end

#valid?Boolean

Returns:

  • (Boolean)


38
39
40
41
42
# File 'lib/pgbus/recurring/task.rb', line 38

def valid?
  @errors = []
  validate!
  @errors.empty?
end