class ActiveJob::Cancel::QueueAdapters::SidekiqAdapter

Public Instance Methods

cancel(job_id, queue_name) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 7
def cancel(job_id, queue_name)
  queue_name = queue_name.call if queue_name.is_a?(Proc)
  job = find_job_by_job_id(job_id, queue_name)

  if job
    job.delete
    return true
  end

  false
end
cancel_by(opts, queue_name) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 19
def cancel_by(opts, queue_name)
  raise ArgumentError, 'Please specify ":provider_job_id"' unless opts[:provider_job_id]

  queue_name = queue_name.call if queue_name.is_a?(Proc)
  job = find_job_by_provider_job_id(opts[:provider_job_id], queue_name)
  if job
    job.delete
    return true
  end

  false
end

Private Instance Methods

find_job_by_job_id(job_id, queue_name) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 33
def find_job_by_job_id(job_id, queue_name)
  find_job_from_queue(job_id, queue_name) || find_job_from_scheduled_set(job_id) || find_job_from_retry_set(job_id)
end
find_job_by_provider_job_id(provider_job_id, queue_name) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 37
def find_job_by_provider_job_id(provider_job_id, queue_name)
  Sidekiq::Queue.new(queue_name).find_job(provider_job_id) ||
  Sidekiq::ScheduledSet.new.find_job(provider_job_id) ||
  Sidekiq::RetrySet.new.find_job(provider_job_id)
end
find_job_from_queue(job_id, queue_name) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 43
def find_job_from_queue(job_id, queue_name)
  queue = Sidekiq::Queue.new(queue_name)
  queue.detect { |j| j.args.first.is_a?(Hash) && j.args.first['job_id'] == job_id }
end
find_job_from_retry_set(job_id) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 53
def find_job_from_retry_set(job_id)
  scheduled_set = Sidekiq::RetrySet.new
  scheduled_set.detect { |j| j.args.first.is_a?(Hash) && j.args.first['job_id'] == job_id }
end
find_job_from_scheduled_set(job_id) click to toggle source
# File lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb, line 48
def find_job_from_scheduled_set(job_id)
  scheduled_set = Sidekiq::ScheduledSet.new
  scheduled_set.detect { |j| j.args.first.is_a?(Hash) && j.args.first['job_id'] == job_id }
end