class Kyklos::JobList

Attributes

jobs[R]

Public Class Methods

new(code = nil) click to toggle source
# File lib/kyklos/job_list.rb, line 8
def initialize(code = nil)
  @jobs = {}
  instance_eval(code) unless code.nil?
end

Public Instance Methods

[](id) click to toggle source
# File lib/kyklos/job_list.rb, line 13
def [](id)
  @jobs[normalize_id(id)]
end
cron(expression, as: nil, desc: nil, &block) click to toggle source
# File lib/kyklos/job_list.rb, line 29
def cron(expression, as: nil, desc: nil, &block)
  add_job(Kyklos::Job::Cron, expression, block, as: as, desc: desc)
end
each(&block) click to toggle source
# File lib/kyklos/job_list.rb, line 17
def each(&block)
  @jobs.each(&block)
end
rate(expression, as: nil, desc: nil, &block) click to toggle source
# File lib/kyklos/job_list.rb, line 25
def rate(expression, as: nil, desc: nil, &block)
  add_job(Kyklos::Job::Rate, expression, block, as: as, desc: desc)
end
run(id) click to toggle source
# File lib/kyklos/job_list.rb, line 21
def run(id)
  self[id].run
end

Private Instance Methods

add_job(klass, expression, block, as:, desc:) click to toggle source
# File lib/kyklos/job_list.rb, line 35
def add_job(klass, expression, block, as:, desc:)
  id = as || job_id(klass, expression)
  normalized_id = normalize_id(id)
  @jobs[normalized_id] = klass.new(expression, block, description: desc)
  normalized_id
end
job_id(klass, expression) click to toggle source
# File lib/kyklos/job_list.rb, line 42
def job_id(klass, expression)
  [klass, expression].map(&:to_s).join('#')
end
normalize_id(id) click to toggle source
# File lib/kyklos/job_list.rb, line 46
def normalize_id(id)
  id.to_s.to_sym
end