aboutsummaryrefslogtreecommitdiffstats
path: root/lib/active_job/queue_adapters/sidekiq_adapter.rb
diff options
context:
space:
mode:
authorMike Perham <mperham@gmail.com>2014-05-19 15:27:28 -0700
committerMike Perham <mperham@gmail.com>2014-05-19 15:27:28 -0700
commit3648838173a1d7217560ed1cf8ab2a217ccbc6d1 (patch)
tree54f1fdc31dd091cc81652bb7acd2d42fd5b2cdcc /lib/active_job/queue_adapters/sidekiq_adapter.rb
parentc6925f52d07a01c2b729a70bac60b11f7e514d76 (diff)
downloadrails-3648838173a1d7217560ed1cf8ab2a217ccbc6d1.tar.gz
rails-3648838173a1d7217560ed1cf8ab2a217ccbc6d1.tar.bz2
rails-3648838173a1d7217560ed1cf8ab2a217ccbc6d1.zip
Implement enqueue_at/enqueue_in
Delayed jobs are supported by all systems except QueueClassic. For it I decided to raise NotImplementedError. The inline implementation is a bit rough.
Diffstat (limited to 'lib/active_job/queue_adapters/sidekiq_adapter.rb')
-rw-r--r--lib/active_job/queue_adapters/sidekiq_adapter.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/active_job/queue_adapters/sidekiq_adapter.rb b/lib/active_job/queue_adapters/sidekiq_adapter.rb
index c8fac32963..41f58f554a 100644
--- a/lib/active_job/queue_adapters/sidekiq_adapter.rb
+++ b/lib/active_job/queue_adapters/sidekiq_adapter.rb
@@ -7,6 +7,13 @@ module ActiveJob
def queue(job, *args)
JobWrapper.client_push class: JobWrapper, queue: job.queue_name, args: [ job, *args ]
end
+
+ def queue_at(job, timestamp, *args)
+ job = { class: JobWrapper, queue: job.queue_name, args: [ job, *args ], at: timestamp }
+ # Optimization to enqueue something now that is scheduled to go out now or in the past
+ job.delete(:at) if timestamp <= Time.now.to_f
+ JobWrapper.client_push(job)
+ end
end
class JobWrapper