lib/resque/scheduler.rb in resque-scheduler-2.0.0.e vs lib/resque/scheduler.rb in resque-scheduler-2.0.0.g
- old
+ new
@@ -114,17 +114,13 @@
log! "Scheduling #{name} "
interval_defined = false
interval_types = %w{cron every}
interval_types.each do |interval_type|
if !config[interval_type].nil? && config[interval_type].length > 0
- begin
- @@scheduled_jobs[name] = rufus_scheduler.send(interval_type, config[interval_type]) do
- log! "queueing #{config['class']} (#{name})"
- enqueue_from_config(config)
- end
- rescue Exception => e
- log! "#{e.class.name}: #{e.message}"
+ @@scheduled_jobs[name] = rufus_scheduler.send(interval_type, config[interval_type]) do
+ log! "queueing #{config['class']} (#{name})"
+ handle_errors { enqueue_from_config(config) }
end
interval_defined = true
break
end
end
@@ -158,11 +154,11 @@
item = nil
begin
handle_shutdown do
if item = Resque.next_item_for_timestamp(timestamp)
log "queuing #{item['class']} [delayed]"
- enqueue_from_config(item)
+ handle_errors { enqueue_from_config(item) }
end
end
# continue processing until there are no more ready items in this timestamp
end while !item.nil?
end
@@ -170,10 +166,18 @@
def handle_shutdown
exit if @shutdown
yield
exit if @shutdown
end
+
+ def handle_errors
+ begin
+ yield
+ rescue Exception => e
+ log! "#{e.class.name}: #{e.message}"
+ end
+ end
# Enqueues a job based on a config hash
def enqueue_from_config(job_config)
args = job_config['args'] || job_config[:args]
@@ -198,15 +202,15 @@
# for non-existent classes (for example: running scheduler in
# one app that schedules for another
if Class === klass
Resque.enqueue(klass, *params)
else
+ # This will not run the before_hooks in rescue, but will at least
+ # queue the job.
Resque::Job.create(queue, klass, *params)
end
end
- rescue
- log! "Failed to enqueue #{klass_name}:\n #{$!}"
end
def rufus_scheduler
@rufus_scheduler ||= Rufus::Scheduler.start_new
end
@@ -273,10 +277,10 @@
log!(msg) if verbose
end
def procline(string)
log! string
- $0 = "resque-scheduler-#{ResqueScheduler::Version}: #{string}"
+ $0 = "resque-scheduler-#{ResqueScheduler::VERSION}: #{string}"
end
end
end