module SimpleSchedule
Public Instance Methods
run()
click to toggle source
# File lib/simple_schedule.rb, line 5 def run scheduler = Rufus::Scheduler.new jobs.each do |type, schedule, job| if job.respond_to?(:perform_later) scheduler.public_send(type, schedule) do logger.info { "Enqueueing #{job} to be performed later" } job.perform_later end elsif job.respond_to?(:perform) scheduler.public_send(type, schedule) do logger.info { "Performing #{job} synchronously" } job.perform end elsif job.instance_methods.include?(:perform) scheduler.public_send(type, schedule) do logger.info { "Performing #{job} synchronously" } job.new.perform end else raise ArgumentError.new("Job #{job} does not respond to #{job}.perform_async, #{job}.perform, or #{job}#perform") end end Signal.trap('INT') { scheduler.shutdown } Signal.trap('TERM') { scheduler.shutdown } scheduler.join end
Private Instance Methods
cron(tab, job)
click to toggle source
# File lib/simple_schedule.rb, line 61 def cron(tab, job) jobs << [:cron, tab, job] end
every(interval, job)
click to toggle source
# File lib/simple_schedule.rb, line 53 def every(interval, job) jobs << [:every, interval, job] end
interval(interval, job)
click to toggle source
# File lib/simple_schedule.rb, line 57 def interval(interval, job) jobs << [:interval, interval, job] end
jobs()
click to toggle source
# File lib/simple_schedule.rb, line 41 def jobs @jobs ||= [] end
logger()
click to toggle source
# File lib/simple_schedule.rb, line 37 def logger @logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT) end
once_at(time, job)
click to toggle source
# File lib/simple_schedule.rb, line 49 def once_at(time, job) jobs << [:at, time, job] end
once_in(interval, job)
click to toggle source
# File lib/simple_schedule.rb, line 45 def once_in(interval, job) jobs << [:in, interval, job] end