Sha256: cc9dd64510f87c2bca002ab9047c3c966f930c00af381084764266960dc8c74c

Contents?: true

Size: 1.4 KB

Versions: 13

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 will not execute
    #     - finished: 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
          :finished
        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

13 entries across 13 versions & 1 rubygems

Version Path
good_job-3.4.8 app/models/concerns/good_job/reportable.rb
good_job-3.4.7 app/models/concerns/good_job/reportable.rb
good_job-3.4.6 app/models/concerns/good_job/reportable.rb
good_job-3.4.5 app/models/concerns/good_job/reportable.rb
good_job-3.4.4 app/models/concerns/good_job/reportable.rb
good_job-3.4.3 app/models/concerns/good_job/reportable.rb
good_job-3.4.2 app/models/concerns/good_job/reportable.rb
good_job-3.4.1 app/models/concerns/good_job/reportable.rb
good_job-3.4.0 app/models/concerns/good_job/reportable.rb
good_job-3.3.3 app/models/concerns/good_job/reportable.rb
good_job-3.3.2 app/models/concerns/good_job/reportable.rb
good_job-3.3.1 app/models/concerns/good_job/reportable.rb
good_job-3.3.0 lib/models/good_job/reportable.rb