Class: ActiveJob::QueueAdapters::TestAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/active_job/cancel/queue_adapters/test_adapter.rb,
lib/active_job/cancel/queue_adapters/test_adapter/rails.rb,
lib/active_job/cancel/queue_adapters/test_adapter/rails_4.rb

Overview

Unfortunately we need to monkey patch the Rails TestAdapter class, because it does not save the job id on the enqueued_jobs array. We rely on a persisted id to fulfill the canceling of any given job id.

Instance Method Summary collapse

Constructor Details

#initializeTestAdapter

Returns a new instance of TestAdapter.



9
10
11
12
13
14
15
16
17
# File 'lib/active_job/cancel/queue_adapters/test_adapter.rb', line 9

def initialize
  if Gem::Requirement.new('>= 5.0').satisfied_by? ActiveJob.version
    require 'active_job/cancel/queue_adapters/test_adapter/rails'
  elsif Gem::Requirement.new('~> 4.2').satisfied_by? ActiveJob.version
    require 'active_job/cancel/queue_adapters/test_adapter/rails_4'
  end

  super
end

Instance Method Details

#enqueue(job) ⇒ Object



12
13
14
15
16
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails_4.rb', line 12

def enqueue(job)
  result = original_enqueue(job)
  fixup_last_job(job)
  result
end

#enqueue_at(job, timestamp) ⇒ Object



18
19
20
21
22
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails_4.rb', line 18

def enqueue_at(job, timestamp)
  result = original_enqueue_at(job, timestamp)
  fixup_last_job(job)
  result
end

#fixup_last_job(job) ⇒ Object



7
8
9
10
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails_4.rb', line 7

def fixup_last_job(job)
  list = perform_enqueued_jobs ? performed_jobs : enqueued_jobs
  list.last[:id] = job.job_id
end

#job_to_hash(job, extras = {}) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails.rb', line 6

def job_to_hash(job, extras = {})
  original_job_to_hash(job, extras).merge!({
    id: job.job_id,
    job: job.class,
    args: job.serialize.fetch('arguments'),
    queue: job.queue_name
  })
end

#original_enqueueObject



4
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails_4.rb', line 4

alias original_enqueue enqueue

#original_enqueue_atObject



5
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails_4.rb', line 5

alias original_enqueue_at enqueue_at

#original_job_to_hashObject



4
# File 'lib/active_job/cancel/queue_adapters/test_adapter/rails.rb', line 4

alias original_job_to_hash job_to_hash