From 5255e4f39f040be28b56740f3ebef667f286926c Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Sun, 24 Aug 2014 15:29:20 +0300 Subject: ActiveJob: Implemented enqueue_at for QueueClassic --- .../queue_adapters/queue_classic_adapter.rb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb') diff --git a/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb b/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb index d74f8cf90e..914390a958 100644 --- a/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb +++ b/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb @@ -5,11 +5,26 @@ module ActiveJob class QueueClassicAdapter class << self def enqueue(job, *args) - QC::Queue.new(job.queue_name).enqueue("#{JobWrapper.name}.perform", job.name, *args) + build_queue(job.queue_name).enqueue("#{JobWrapper.name}.perform", job.name, *args) end def enqueue_at(job, timestamp, *args) - raise NotImplementedError + queue = build_queue(job.queue_name) + unless queue.respond_to?(:enqueue_at) + raise NotImplementedError, 'To be able to schedule jobs with Queue Classic ' \ + 'the QC::Queue needs to respond to `enqueue_at(timestamp, method, *args)`. ' + 'You can implement this yourself or you can use the queue_classic-later gem.' + end + queue.enqueue_at(timestamp, "#{JobWrapper.name}.perform", job.name, *args) + end + + # Builds a QC::Queue object to schedule jobs on. + # + # If you have a custom QC::Queue subclass you'll need to suclass + # ActiveJob::QueueAdapters::QueueClassicAdapter and override the + # build_queue method. + def build_queue(queue_name) + QC::Queue.new(queue_name) end end -- cgit v1.2.3 From 1e237b4e44b7de564c7d6b331dd2f2243c4113fd Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Mon, 25 Aug 2014 17:34:50 +0300 Subject: Active Job refactoring --- .../lib/active_job/queue_adapters/queue_classic_adapter.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb') diff --git a/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb b/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb index 914390a958..ddcc868317 100644 --- a/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb +++ b/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb @@ -4,18 +4,18 @@ module ActiveJob module QueueAdapters class QueueClassicAdapter class << self - def enqueue(job, *args) - build_queue(job.queue_name).enqueue("#{JobWrapper.name}.perform", job.name, *args) + def enqueue(job) + build_queue(job.queue_name).enqueue("#{JobWrapper.name}.perform", job.serialize) end - def enqueue_at(job, timestamp, *args) + def enqueue_at(job, timestamp) queue = build_queue(job.queue_name) unless queue.respond_to?(:enqueue_at) raise NotImplementedError, 'To be able to schedule jobs with Queue Classic ' \ 'the QC::Queue needs to respond to `enqueue_at(timestamp, method, *args)`. ' 'You can implement this yourself or you can use the queue_classic-later gem.' end - queue.enqueue_at(timestamp, "#{JobWrapper.name}.perform", job.name, *args) + queue.enqueue_at(timestamp, "#{JobWrapper.name}.perform", job.serialize) end # Builds a QC::Queue object to schedule jobs on. @@ -30,8 +30,8 @@ module ActiveJob class JobWrapper class << self - def perform(job_name, *args) - job_name.constantize.new.execute(*args) + def perform(job_data) + Base.execute job_data end end end -- cgit v1.2.3