lib/resque/scheduler.rb in resque-scheduler-1.9.7 vs lib/resque/scheduler.rb in resque-scheduler-1.9.8
- old
+ new
@@ -101,18 +101,22 @@
def enqueue_delayed_items_for_timestamp(timestamp)
item = nil
begin
handle_shutdown do
if item = Resque.next_item_for_timestamp(timestamp)
- log "queuing #{item['class']} [delayed]"
- queue = item['queue'] || Resque.queue_from_class(constantize(item['class']))
- # Support custom job classes like job with status
- if (job_klass = item['custom_job_class']) && (job_klass != 'Resque::Job')
- # custom job classes not supporting the same API calls must implement the #schedule method
- constantize(job_klass).scheduled(queue, item['class'], *item['args'])
- else
- Resque::Job.create(queue, item['class'], *item['args'])
+ begin
+ log "queuing #{item['class']} [delayed]"
+ queue = item['queue'] || Resque.queue_from_class(constantize(item['class']))
+ # Support custom job classes like job with status
+ if (job_klass = item['custom_job_class']) && (job_klass != 'Resque::Job')
+ # custom job classes not supporting the same API calls must implement the #schedule method
+ constantize(job_klass).scheduled(queue, item['class'], *item['args'])
+ else
+ Resque::Job.create(queue, item['class'], *item['args'])
+ end
+ rescue
+ log! "Failed to enqueue #{klass_name}:\n #{$!}"
end
end
end
# continue processing until there are no more ready items in this timestamp
end while !item.nil?
@@ -126,18 +130,20 @@
# Enqueues a job based on a config hash
def enqueue_from_config(config)
args = config['args'] || config[:args]
klass_name = config['class'] || config[:class]
- params = args.nil? ? [] : Array(args)
+ params = args.is_a?(Hash) ? [args] : Array(args)
queue = config['queue'] || config[:queue] || Resque.queue_from_class(constantize(klass_name))
# Support custom job classes like job with status
if (job_klass = config['custom_job_class']) && (job_klass != 'Resque::Job')
# custom job classes not supporting the same API calls must implement the #schedule method
constantize(job_klass).scheduled(queue, klass_name, *params)
else
Resque::Job.create(queue, klass_name, *params)
end
+ rescue
+ log! "Failed to enqueue #{klass_name}:\n #{$!}"
end
def rufus_scheduler
@rufus_scheduler ||= Rufus::Scheduler.start_new
end