lib/resque/scheduler.rb in resque-scheduler-2.2.0 vs lib/resque/scheduler.rb in resque-scheduler-2.3.0
- old
+ new
@@ -218,21 +218,21 @@
# Enqueues a job based on a config hash
def enqueue_from_config(job_config)
args = job_config['args'] || job_config[:args]
klass_name = job_config['class'] || job_config[:class]
- klass = Resque.constantize(klass_name) rescue klass_name
+ klass = ResqueScheduler::Util.constantize(klass_name) rescue klass_name
params = args.is_a?(Hash) ? [args] : Array(args)
queue = job_config['queue'] || job_config[:queue] || Resque.queue_from_class(klass)
# Support custom job classes like those that inherit from Resque::JobWithStatus (resque-status)
if (job_klass = job_config['custom_job_class']) && (job_klass != 'Resque::Job')
# The custom job class API must offer a static "scheduled" method. If the custom
# job class can not be constantized (via a requeue call from the web perhaps), fall
# back to enqueing normally via Resque::Job.create.
begin
- Resque.constantize(job_klass).scheduled(queue, klass_name, *params)
+ ResqueScheduler::Util.constantize(job_klass).scheduled(queue, klass_name, *params)
rescue NameError
# Note that the custom job class (job_config['custom_job_class']) is the one enqueued
Resque::Job.create(queue, job_klass, *params)
end
else
@@ -311,11 +311,14 @@
# Sets the shutdown flag, clean schedules and exits if sleeping
def shutdown
@shutdown = true
if @sleeping
- Resque.clean_schedules
- Thread.new { release_master_lock! }
+ thread = Thread.new do
+ Resque.clean_schedules
+ release_master_lock!
+ end
+ thread.join
exit
end
end
def log!(msg)