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