Module: SolidQueue::Batch::Status

Extended by:
ActiveSupport::Concern
Included in:
SolidQueue::Batch
Defined in:
app/models/solid_queue/batch/status.rb

Instance Method Summary collapse

Instance Method Details

#completed_jobsObject

Failed jobs no longer have tracking rows, so exclude them from the completed count.



43
44
45
# File 'app/models/solid_queue/batch/status.rb', line 43

def completed_jobs
  finished? ? self[:completed_jobs] : [ total_jobs - pending_jobs - failed_jobs, 0 ].max
end

#enqueued?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/models/solid_queue/batch/status.rb', line 38

def enqueued?
  enqueued_at.present?
end

#failed?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/models/solid_queue/batch/status.rb', line 26

def failed?
  failed_at.present?
end

#failed_jobsObject



47
48
49
# File 'app/models/solid_queue/batch/status.rb', line 47

def failed_jobs
  finished? ? self[:failed_jobs] : jobs.failed.count
end

#finished?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/solid_queue/batch/status.rb', line 34

def finished?
  finished_at.present?
end

#pending_jobsObject

Pending counts attempts, not logical jobs: while a retry is enqueued and its previous attempt hasn't finished yet, both have tracking rows, so the counts derived from it clamp at the logical totals.



54
55
56
# File 'app/models/solid_queue/batch/status.rb', line 54

def pending_jobs
  finished? ? 0 : batch_executions.count
end

#progress_percentageObject



58
59
60
61
# File 'app/models/solid_queue/batch/status.rb', line 58

def progress_percentage
  return 0 if total_jobs == 0
  ([ total_jobs - pending_jobs, 0 ].max * 100.0 / total_jobs).round(2)
end

#statusObject



16
17
18
19
20
21
22
23
24
# File 'app/models/solid_queue/batch/status.rb', line 16

def status
  if finished?
    failed? ? :failed : :completed
  elsif enqueued?
    :enqueued
  else
    :pending
  end
end

#succeeded?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'app/models/solid_queue/batch/status.rb', line 30

def succeeded?
  finished? && !failed?
end