aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2015-08-13 09:56:06 +0200
committerYves Senn <yves.senn@gmail.com>2015-08-13 10:00:19 +0200
commit68e3279163d06e6b04e043f91c9470e9259bbbe0 (patch)
tree0b332df5e991a64bea49e89b6d27f42c07f6111d
parent0650d0848817bbc71d1450297b066445e8433ff1 (diff)
downloadrails-68e3279163d06e6b04e043f91c9470e9259bbbe0.tar.gz
rails-68e3279163d06e6b04e043f91c9470e9259bbbe0.tar.bz2
rails-68e3279163d06e6b04e043f91c9470e9259bbbe0.zip
implement `provider_job_id` for `queue_classic`.
The latest, currently unreleased, version of queue_classic is required for this to work. See https://github.com/QueueClassic/queue_classic/pull/262 for more details.
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock11
-rw-r--r--activejob/CHANGELOG.md7
-rw-r--r--activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb8
-rw-r--r--activejob/test/integration/queuing_test.rb4
5 files changed, 23 insertions, 9 deletions
diff --git a/Gemfile b/Gemfile
index de4159d254..95718d67ae 100644
--- a/Gemfile
+++ b/Gemfile
@@ -49,7 +49,7 @@ group :job do
gem 'sidekiq', require: false
gem 'sucker_punch', require: false
gem 'delayed_job', require: false
- gem 'queue_classic', require: false, platforms: :ruby
+ gem 'queue_classic', github: "QueueClassic/queue_classic", require: false, platforms: :ruby
gem 'sneakers', require: false
gem 'que', require: false
gem 'backburner', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 270e96c647..aa0f5f7b2b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,4 +1,11 @@
GIT
+ remote: git://github.com/QueueClassic/queue_classic.git
+ revision: d144db29f1436e9e8b3c7a1a1ecd4442316a9ecd
+ specs:
+ queue_classic (3.2.0.alpha)
+ pg (>= 0.17, < 0.19)
+
+GIT
remote: git://github.com/bkeepers/qu.git
revision: d098e2657c92e89a6413bebd9c033930759c061f
branch: master
@@ -173,8 +180,6 @@ GEM
pg (0.18.2)
psych (2.0.13)
que (0.10.0)
- queue_classic (3.1.0)
- pg (>= 0.17, < 0.19)
racc (1.4.12)
rack (1.6.4)
rack-cache (1.2)
@@ -289,7 +294,7 @@ DEPENDENCIES
qu-rails!
qu-redis
que
- queue_classic
+ queue_classic!
racc (>= 1.4.6)
rack-cache (~> 1.2)
rails!
diff --git a/activejob/CHANGELOG.md b/activejob/CHANGELOG.md
index d8944a5338..637096e935 100644
--- a/activejob/CHANGELOG.md
+++ b/activejob/CHANGELOG.md
@@ -1,6 +1,11 @@
+* Implement `provider_job_id` for `queue_classic` adapter. This requires the
+ latest, currently unreleased, version of queue_classic.
+
+ *Yves Senn*
+
* `assert_enqueued_with` and `assert_performed_with` now returns the matched
job instance for further assertions.
-
+
*Jean Boussier*
* Include I18n.locale into job serialization/deserialization and use it around
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 059754a87f..0ee41407d8 100644
--- a/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb
+++ b/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb
@@ -18,7 +18,9 @@ module ActiveJob
# Rails.application.config.active_job.queue_adapter = :queue_classic
class QueueClassicAdapter
def enqueue(job) #:nodoc:
- build_queue(job.queue_name).enqueue("#{JobWrapper.name}.perform", job.serialize)
+ qc_job = build_queue(job.queue_name).enqueue("#{JobWrapper.name}.perform", job.serialize)
+ job.provider_job_id = qc_job["id"] if qc_job.is_a?(Hash)
+ qc_job
end
def enqueue_at(job, timestamp) #:nodoc:
@@ -28,7 +30,9 @@ module ActiveJob
'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.serialize)
+ qc_job = queue.enqueue_at(timestamp, "#{JobWrapper.name}.perform", job.serialize)
+ job.provider_job_id = qc_job["id"] if qc_job.is_a?(Hash)
+ qc_job
end
# Builds a <tt>QC::Queue</tt> object to schedule jobs on.
diff --git a/activejob/test/integration/queuing_test.rb b/activejob/test/integration/queuing_test.rb
index 1d1e675435..ca8047ef0b 100644
--- a/activejob/test/integration/queuing_test.rb
+++ b/activejob/test/integration/queuing_test.rb
@@ -57,13 +57,13 @@ class QueuingTest < ActiveSupport::TestCase
end
test 'should supply a provider_job_id when available for immediate jobs' do
- skip unless adapter_is?(:delayed_job, :sidekiq, :qu, :que)
+ skip unless adapter_is?(:delayed_job, :sidekiq, :qu, :que, :queue_classic)
test_job = TestJob.perform_later @id
assert test_job.provider_job_id, 'Provider job id should be set by provider'
end
test 'should supply a provider_job_id when available for delayed jobs' do
- skip unless adapter_is?(:delayed_job, :sidekiq, :que)
+ skip unless adapter_is?(:delayed_job, :sidekiq, :que, :queue_classic)
delayed_test_job = TestJob.set(wait: 1.minute).perform_later @id
assert delayed_test_job.provider_job_id, 'Provider job id should by set for delayed jobs by provider'
end