class SayWhen::Scheduler
Public Instance Methods
extract_data(job)
click to toggle source
# File lib/say_when/scheduler.rb, line 81 def extract_data(job) job[:data] if job && job.is_a?(Hash) end
extract_job_class(job)
click to toggle source
# File lib/say_when/scheduler.rb, line 65 def extract_job_class(job) if job.is_a?(Hash) job[:class] || job[:job_class] elsif job.is_a?(Class) job.name elsif job.is_a?(String) job end end
extract_job_method(job)
click to toggle source
# File lib/say_when/scheduler.rb, line 75 def extract_job_method(job) if job.is_a?(Hash) job[:method] || job[:job_method] end || 'execute' end
extract_scheduled(job)
click to toggle source
# File lib/say_when/scheduler.rb, line 61 def extract_scheduled(job) job[:scheduled] if job.is_a?(Hash) end
job_options(job)
click to toggle source
# File lib/say_when/scheduler.rb, line 48 def job_options(job) opts = { scheduled: extract_scheduled(job), job_class: extract_job_class(job), job_method: extract_job_method(job), data: extract_data(job) } unless opts[:scheduled] || opts[:job_class] raise "No job class or scheduled option: #{job.inspect}\nopts: #{opts.inspect}" end opts end
logger()
click to toggle source
# File lib/say_when/scheduler.rb, line 93 def logger SayWhen.logger end
schedule(job)
click to toggle source
When passing in a job, can be a Hash, String, or Class Hash: { class: ‘<class name>’ } or { job_class: ‘<class name>’ } String: ‘<class name>’ Class: <job class>
# File lib/say_when/scheduler.rb, line 13 def schedule(job) storage.create(job) end
schedule_cron(expression, job)
click to toggle source
# File lib/say_when/scheduler.rb, line 17 def schedule_cron(expression, job) time_zone = if job.is_a?(Hash) job.delete(:time_zone) end || 'UTC' options = job_options(job) options[:trigger_strategy] = :cron options[:trigger_options] = { expression: expression, time_zone: time_zone } schedule(options) end
schedule_in(after, job = {})
click to toggle source
# File lib/say_when/scheduler.rb, line 41 def schedule_in(after, job = {}) options = job_options(job) options[:trigger_strategy] = 'once' options[:trigger_options] = { at: (Time.now + after)} schedule(options) end
schedule_instance(next_at_method = 'next_fire_at', job = {})
click to toggle source
# File lib/say_when/scheduler.rb, line 27 def schedule_instance(next_at_method = 'next_fire_at', job = {}) options = job_options(job) options[:trigger_strategy] = 'instance' options[:trigger_options] = { next_at_method: next_at_method } schedule(options) end
schedule_once(time, job = {})
click to toggle source
# File lib/say_when/scheduler.rb, line 34 def schedule_once(time, job = {}) options = job_options(job) options[:trigger_strategy] = 'once' options[:trigger_options] = { at: time} schedule(options) end
storage()
click to toggle source
# File lib/say_when/scheduler.rb, line 89 def storage @storage ||= load_strategy(:storage, SayWhen.options[:storage_strategy]) end
storage=(s)
click to toggle source
# File lib/say_when/scheduler.rb, line 85 def storage=(s) @storage = s end