Sha256: 81d89d5d82bb63eacf9ec5f861820ec51921f73ccaf104cd27d1b56ad18619b4

Contents?: true

Size: 1.4 KB

Versions: 53

Compression:

Stored size: 1.4 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

53 entries across 53 versions & 1 rubygems

Version Path
good_job-3.18.2 app/models/concerns/good_job/reportable.rb
good_job-3.18.1 app/models/concerns/good_job/reportable.rb
good_job-3.18.0 app/models/concerns/good_job/reportable.rb
good_job-3.17.4 app/models/concerns/good_job/reportable.rb
good_job-3.17.3 app/models/concerns/good_job/reportable.rb
good_job-3.17.2 app/models/concerns/good_job/reportable.rb
good_job-3.17.1 app/models/concerns/good_job/reportable.rb
good_job-3.17.0 app/models/concerns/good_job/reportable.rb
good_job-3.16.4 app/models/concerns/good_job/reportable.rb
good_job-3.16.3 app/models/concerns/good_job/reportable.rb
good_job-3.16.2 app/models/concerns/good_job/reportable.rb
good_job-3.16.1 app/models/concerns/good_job/reportable.rb
good_job-3.16.0 app/models/concerns/good_job/reportable.rb