Sha256: a825efc739524f998e014d5a9abe1e8aac6ec2bf7c6d962514288bf0362ee5a9

Contents?: true

Size: 1.24 KB

Versions: 18

Compression:

Stored size: 1.24 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?
          :discarded
        else
          :succeeded
        end
      elsif performed_at.present?
        :running
      elsif (scheduled_at || created_at) <= DateTime.current
        :queued
      elsif error.present?
        :retried
      else
        :scheduled
      end
    end

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

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
good_job-4.9.3 app/models/concerns/good_job/reportable.rb
good_job-4.9.2 app/models/concerns/good_job/reportable.rb
good_job-4.9.1 app/models/concerns/good_job/reportable.rb
good_job-4.9.0 app/models/concerns/good_job/reportable.rb
good_job-4.8.2 app/models/concerns/good_job/reportable.rb
good_job-4.8.1 app/models/concerns/good_job/reportable.rb
good_job-4.8.0 app/models/concerns/good_job/reportable.rb
good_job-4.7.0 app/models/concerns/good_job/reportable.rb
good_job-4.6.0 app/models/concerns/good_job/reportable.rb
good_job-4.5.1 app/models/concerns/good_job/reportable.rb
good_job-4.5.0 app/models/concerns/good_job/reportable.rb
good_job-4.4.2 app/models/concerns/good_job/reportable.rb
good_job-4.4.1 app/models/concerns/good_job/reportable.rb
good_job-4.4.0 app/models/concerns/good_job/reportable.rb
good_job-4.3.0 app/models/concerns/good_job/reportable.rb
good_job-4.2.1 app/models/concerns/good_job/reportable.rb
good_job-4.2.0 app/models/concerns/good_job/reportable.rb
good_job-4.1.1 app/models/concerns/good_job/reportable.rb