bensheldon/good_job · error · ArgumentError

Do not use `0` for cleanup intervals. Use `false` to disable

Error message

Do not use `0` for cleanup intervals. Use `false` to disable, or -1 to always run

What it means

Error "Do not use `0` for cleanup intervals. Use `false` to disable, or -1 to always run" thrown in bensheldon/good_job.

Source

Thrown at lib/good_job/cleanup_tracker.rb:12

# frozen_string_literal: true

module GoodJob # :nodoc:
  # Tracks thresholds for cleaning up old jobs.
  class CleanupTracker
    attr_accessor :cleanup_interval_seconds,
                  :cleanup_interval_jobs,
                  :job_count,
                  :last_at

    def initialize(cleanup_interval_seconds: false, cleanup_interval_jobs: false)
      raise ArgumentError, "Do not use `0` for cleanup intervals. Use `false` to disable, or -1 to always run" if cleanup_interval_seconds == 0 || cleanup_interval_jobs == 0 # rubocop:disable Style/NumericPredicate

      self.cleanup_interval_seconds = cleanup_interval_seconds
      self.cleanup_interval_jobs = cleanup_interval_jobs

      reset
    end

    # Increments job count.
    # @return [Integer]
    def increment
      self.job_count += 1
    end

    # Whether a cleanup should be run.
    # @return [Boolean]
    def cleanup?
      (cleanup_interval_jobs && job_count > cleanup_interval_jobs) ||
        (cleanup_interval_seconds && last_at < Time.current - cleanup_interval_seconds) ||

View on GitHub (pinned to 5fcde48f87)

Solutions

  1. Do not set cleanup intervals to 0.
  2. Use false to disable the cleanup or -1 to always run it.

Example fix

config.good_job.cleanup_interval_seconds = false

When it happens

Trigger: Thrown at lib/good_job/cleanup_tracker.rb:12 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of bensheldon/good_job@5fcde48f87 (2026-08-23). Data as JSON: /api/errors/a0c10797f15e2671. Report an issue: GitHub.