Module: ActiveJob::QueueAdapters::SolidQueueExt

Includes:
RecurringTasks, Workers, MissionControl::Jobs::Adapter
Defined in:
lib/active_job/queue_adapters/solid_queue_ext.rb

Defined Under Namespace

Classes: SolidQueueJobs

Instance Method Summary collapse

Methods included from RecurringTasks

#can_enqueue_recurring_task?, #enqueue_recurring_task, #find_recurring_task, #recurring_tasks, #supports_recurring_tasks?

Methods included from Workers

#count_workers, #exposes_workers?, #fetch_workers, #find_worker

Methods included from MissionControl::Jobs::Adapter

#activating, #exposes_workers?, #find_recurring_task, #find_worker, #recurring_tasks, #supports_job_filter?, #supports_job_status?, #supports_queue_pausing?, #supports_recurring_tasks?, #workers

Instance Method Details

#clear_queue(queue_name) ⇒ Object



24
25
26
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 24

def clear_queue(queue_name)
  find_queue_by_name(queue_name).clear
end

#discard_all_jobs(jobs_relation) ⇒ Object



66
67
68
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 66

def discard_all_jobs(jobs_relation)
  SolidQueueJobs.new(jobs_relation).discard_all
end

#discard_job(job, jobs_relation) ⇒ Object



70
71
72
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 70

def discard_job(job, jobs_relation)
  find_solid_queue_job!(job.job_id, jobs_relation).discard
end

#dispatch_job(job, jobs_relation) ⇒ Object



74
75
76
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 74

def dispatch_job(job, jobs_relation)
  dispatch_immediately find_solid_queue_job!(job.job_id, jobs_relation)
end

#fetch_jobs(jobs_relation) ⇒ Object



52
53
54
55
56
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 52

def fetch_jobs(jobs_relation)
  SolidQueueJobs.new(jobs_relation).jobs.map do |job|
    deserialize_and_proxy_solid_queue_job(job, jobs_relation.status)
  end
end

#find_job(job_id) ⇒ Object



78
79
80
81
82
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 78

def find_job(job_id, *)
  if job = SolidQueue::Job.where(active_job_id: job_id).order(:id).last
    deserialize_and_proxy_solid_queue_job job
  end
end

#jobs_count(jobs_relation) ⇒ Object



48
49
50
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 48

def jobs_count(jobs_relation)
  SolidQueueJobs.new(jobs_relation).count
end

#pause_queue(queue_name) ⇒ Object



28
29
30
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 28

def pause_queue(queue_name)
  find_queue_by_name(queue_name).pause
end

#queue_paused?(queue_name) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 36

def queue_paused?(queue_name)
  find_queue_by_name(queue_name).paused?
end

#queue_size(queue_name) ⇒ Object



20
21
22
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 20

def queue_size(queue_name)
  find_queue_by_name(queue_name).size
end

#queuesObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 5

def queues
  queues = SolidQueue::Queue.all
  queue_names = queues.map(&:name)
  pauses = SolidQueue::Pause.where(queue_name: queue_names).index_by(&:queue_name)
  sizes = SolidQueue::ReadyExecution.where(queue_name: queue_names).group(:queue_name).count

  queues.collect do |queue|
    {
      name: queue.name,
      size: sizes[queue.name] || 0,
      active: pauses[queue.name].nil?
    }
  end
end

#resume_queue(queue_name) ⇒ Object



32
33
34
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 32

def resume_queue(queue_name)
  find_queue_by_name(queue_name).resume
end

#retry_all_jobs(jobs_relation) ⇒ Object



58
59
60
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 58

def retry_all_jobs(jobs_relation)
  SolidQueueJobs.new(jobs_relation).retry_all
end

#retry_job(job, jobs_relation) ⇒ Object



62
63
64
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 62

def retry_job(job, jobs_relation)
  find_solid_queue_job!(job.job_id, jobs_relation).retry
end

#supported_job_filtersObject



44
45
46
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 44

def supported_job_filters(*)
  [ :queue_name, :job_class_name, :finished_at ]
end

#supported_job_statusesObject



40
41
42
# File 'lib/active_job/queue_adapters/solid_queue_ext.rb', line 40

def supported_job_statuses
  SolidQueueJobs::STATUS_MAP.keys
end