Sha256: 6ac909b230f8d8eec60c8d7892296dd14eea7af5261852ec70158d24004d8ca4

Contents?: true

Size: 1.39 KB

Versions: 44

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true
module GoodJob
  module Reportable
    # There are 3 buckets of non-overlapping statuses:
    #   1. The job will be executed
    #     - queued: The job will execute immediately when an execution thread becomes available.
    #     - scheduled: The job is scheduled to execute in the future.
    #     - retried: The job previously errored on execution and will be re-executed in the future.
    #   2. The job is being executed
    #     - running: the job is actively being executed by an execution thread
    #   3. The job has finished
    #     - succeeded: The job executed successfully
    #     - discarded: The job previously errored on execution and will not be re-executed in the future.
    #
    # @return [Symbol]
    def status
      if finished_at.present?
        if error.present? && retried_good_job_id.present?
          :retried
        elsif error.present? && retried_good_job_id.nil?
          :discarded
        else
          :succeeded
        end
      elsif (scheduled_at || created_at) > DateTime.current
        if serialized_params.fetch('executions', 0) > 1
          :retried
        else
          :scheduled
        end
      elsif running?
        :running
      else
        :queued
      end
    end

    # The last relevant timestamp for this execution
    def last_status_at
      finished_at || performed_at || scheduled_at || created_at
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
good_job-3.15.14 app/models/concerns/good_job/reportable.rb
good_job-3.15.13 app/models/concerns/good_job/reportable.rb
good_job-3.15.12 app/models/concerns/good_job/reportable.rb
good_job-3.15.11 app/models/concerns/good_job/reportable.rb
good_job-3.15.10 app/models/concerns/good_job/reportable.rb
good_job-3.15.9 app/models/concerns/good_job/reportable.rb
good_job-3.15.8 app/models/concerns/good_job/reportable.rb
good_job-3.15.7 app/models/concerns/good_job/reportable.rb
good_job-3.15.6 app/models/concerns/good_job/reportable.rb
good_job-3.15.5 app/models/concerns/good_job/reportable.rb
good_job-3.15.4 app/models/concerns/good_job/reportable.rb
good_job-3.15.3 app/models/concerns/good_job/reportable.rb
good_job-3.15.2 app/models/concerns/good_job/reportable.rb
good_job-3.15.1 app/models/concerns/good_job/reportable.rb
good_job-3.15.0 app/models/concerns/good_job/reportable.rb
good_job-3.14.2 app/models/concerns/good_job/reportable.rb
good_job-3.14.1 app/models/concerns/good_job/reportable.rb
good_job-3.14.0 app/models/concerns/good_job/reportable.rb
good_job-3.13.0 app/models/concerns/good_job/reportable.rb
good_job-3.12.8 app/models/concerns/good_job/reportable.rb