Skip to content

Commit

Permalink
Make que report back its job_id to provider_job_id
Browse files Browse the repository at this point in the history
Signed-off-by: Jeroen van Baarsen <jeroenvanbaarsen@gmail.com>
  • Loading branch information
jvanbaarsen committed May 7, 2015
1 parent 52d1318 commit 30107c6
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 13 deletions.
2 changes: 1 addition & 1 deletion activejob/CHANGELOG.md
@@ -1,4 +1,4 @@
* Allow `Sidekiq` to report the job id back to `ActiveJob::Base` as
* Allow `Sidekiq` and `que` to report the job id back to `ActiveJob::Base` as
`provider_job_id`

*Jeroen van Baarsen*
Expand Down
8 changes: 6 additions & 2 deletions activejob/lib/active_job/queue_adapters/que_adapter.rb
Expand Up @@ -16,11 +16,15 @@ module QueueAdapters
# Rails.application.config.active_job.queue_adapter = :que
class QueAdapter
def enqueue(job) #:nodoc:
JobWrapper.enqueue job.serialize
que_job = JobWrapper.enqueue job.serialize
job.provider_job_id = que_job.attrs["job_id"]
que_job
end

def enqueue_at(job, timestamp) #:nodoc:
JobWrapper.enqueue job.serialize, run_at: Time.at(timestamp)
que_job = JobWrapper.enqueue job.serialize, run_at: Time.at(timestamp)
job.provider_job_id = que_job.attrs["job_id"]
que_job
end

class JobWrapper < Que::Job #:nodoc:
Expand Down
14 changes: 4 additions & 10 deletions activejob/test/integration/queuing_test.rb
Expand Up @@ -56,19 +56,13 @@ class QueuingTest < ActiveSupport::TestCase
end
end

test 'should supply a provider_job_id to DelayedJob' do
skip unless adapter_is?(:delayed_job)
test 'should supply a provider_job_id when available' do
skip unless adapter_is?(:sidekiq) || adapter_is?(:que) || adapter_is?(:delayed_job)
test_job = TestJob.perform_later @id
assert_kind_of Fixnum, test_job.provider_job_id
end

test 'should supply a provider_job_id to Sidekiq' do
skip unless adapter_is?(:sidekiq)
test_job = TestJob.perform_later @id
refute test_job.provider_job_id.nil?, "Provider job id should be set by Sidekiq"
refute test_job.provider_job_id.nil?, "Provider job id should be set by provider"

delayed_test_job = TestJob.set(wait: 1.minute).perform_later @id
refute delayed_test_job.provider_job_id.nil?,
"Provider job id should by set for delayed jobs by sidekiq"
"Provider job id should by set for delayed jobs by provider"
end
end

0 comments on commit 30107c6

Please sign in to comment.