class SimpleScheduler::SchedulerJob
Active Job class that queues jobs defined in the config file.
Public Instance Methods
perform()
click to toggle source
# File lib/simple_scheduler/scheduler_job.rb, line 4 def perform load_config queue_future_jobs end
Private Instance Methods
config_path()
click to toggle source
Returns the path of the Simple Scheduler configuration file. @return [String]
# File lib/simple_scheduler/scheduler_job.rb, line 13 def config_path ENV["SIMPLE_SCHEDULER_CONFIG"] || "config/simple_scheduler.yml" end
load_config()
click to toggle source
Load the global scheduler config from the YAML file.
# File lib/simple_scheduler/scheduler_job.rb, line 18 def load_config @config = YAML.safe_load(ERB.new(File.read(config_path)).result) @queue_ahead = @config["queue_ahead"] || Task::DEFAULT_QUEUE_AHEAD_MINUTES @queue_name = @config["queue_name"] || "default" @time_zone = @config["tz"] || Time.zone.tzinfo.name @config.delete("queue_ahead") @config.delete("queue_name") @config.delete("tz") end
queue_future_jobs()
click to toggle source
Queue each of the future jobs into Sidekiq from the defined tasks.
# File lib/simple_scheduler/scheduler_job.rb, line 29 def queue_future_jobs tasks.each do |task| # Schedule the new run times using the future job wrapper. new_run_times = task.future_run_times - task.existing_run_times new_run_times.each do |time| SimpleScheduler::FutureJob.set(queue: @queue_name, wait_until: time) .perform_later(task.params, time.to_i) end end end
tasks()
click to toggle source
The array of tasks loaded from the config YAML. @return [Array<SimpleScheduler::Task]
# File lib/simple_scheduler/scheduler_job.rb, line 42 def tasks @config.map do |task_name, options| task_params = options.symbolize_keys task_params[:queue_ahead] ||= @queue_ahead task_params[:name] = task_name task_params[:tz] ||= @time_zone Task.new(task_params) end end