class Schked::Worker
Attributes
config[R]
scheduler[R]
Public Class Methods
new(config:)
click to toggle source
# File lib/schked/worker.rb, line 7 def initialize(config:) @config = config @scheduler = Rufus::Scheduler.new define_callbacks load_schedule end
Public Instance Methods
job(as)
click to toggle source
# File lib/schked/worker.rb, line 16 def job(as) scheduler.jobs.find { |job| job.opts[:as] == as } end
pause()
click to toggle source
# File lib/schked/worker.rb, line 20 def pause scheduler.pause end
schedule()
click to toggle source
# File lib/schked/worker.rb, line 32 def schedule config .paths .map { |path| File.read(path) } .join("\n") end
stop()
click to toggle source
# File lib/schked/worker.rb, line 28 def stop scheduler.stop end
wait()
click to toggle source
# File lib/schked/worker.rb, line 24 def wait scheduler.join end
Private Instance Methods
define_callbacks()
click to toggle source
# File lib/schked/worker.rb, line 43 def define_callbacks cfg = config scheduler.define_singleton_method(:on_error) do |job, error| cfg.logger.fatal("Task #{job.opts[:as] || job.job_id} failed with error: #{error.message}") cfg.logger.error(error.backtrace.join("\n")) if error.backtrace cfg.fire_callback(:on_error, job, error) end scheduler.define_singleton_method(:on_pre_trigger) do |job, time| cfg.logger.info("Started task: #{job.opts[:as] || job.job_id}") cfg.fire_callback(:before_start, job, time) end scheduler.define_singleton_method(:on_post_trigger) do |job, time| cfg.logger.info("Finished task: #{job.opts[:as] || job.job_id}") cfg.fire_callback(:after_finish, job, time) end end
load_schedule()
click to toggle source
# File lib/schked/worker.rb, line 66 def load_schedule scheduler.instance_eval(schedule) end