diff options
author | Cristian Bica <cristian.bica@gmail.com> | 2014-08-24 15:29:20 +0300 |
---|---|---|
committer | Cristian Bica <cristian.bica@gmail.com> | 2014-09-02 14:35:53 +0300 |
commit | 5255e4f39f040be28b56740f3ebef667f286926c (patch) | |
tree | 35473fee32b07e99ebed6a8f6504e5f03e1b2073 /activejob/lib | |
parent | 368001c0218dbe9a5851ea1b804fdd9d7c0ba45f (diff) | |
download | rails-5255e4f39f040be28b56740f3ebef667f286926c.tar.gz rails-5255e4f39f040be28b56740f3ebef667f286926c.tar.bz2 rails-5255e4f39f040be28b56740f3ebef667f286926c.zip |
ActiveJob: Implemented enqueue_at for QueueClassic
Diffstat (limited to 'activejob/lib')
-rw-r--r-- | activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb | 19 |
1 files changed, 17 insertions, 2 deletions
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 <tt>QC::Queue</tt> object to schedule jobs on. + # + # If you have a custom <tt>QC::Queue</tt> subclass you'll need to suclass + # <tt>ActiveJob::QueueAdapters::QueueClassicAdapter</tt> and override the + # <tt>build_queue</tt> method. + def build_queue(queue_name) + QC::Queue.new(queue_name) end end |