Sha256: bcb5e07116e467aa66c5934b2c77170fddf97afbe208d9333179e55a6a299b37

Contents?: true

Size: 1.19 KB

Versions: 17

Compression:

Stored size: 1.19 KB

Contents

# 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) ||
        false
    end

    # Resets the counters.
    # @return [void]
    def reset
      self.job_count = 0
      self.last_at = Time.current
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
good_job-4.8.2 lib/good_job/cleanup_tracker.rb
good_job-4.8.1 lib/good_job/cleanup_tracker.rb
good_job-4.8.0 lib/good_job/cleanup_tracker.rb
good_job-4.7.0 lib/good_job/cleanup_tracker.rb
good_job-4.6.0 lib/good_job/cleanup_tracker.rb
good_job-4.5.1 lib/good_job/cleanup_tracker.rb
good_job-4.5.0 lib/good_job/cleanup_tracker.rb
good_job-4.4.2 lib/good_job/cleanup_tracker.rb
good_job-4.4.1 lib/good_job/cleanup_tracker.rb
good_job-4.4.0 lib/good_job/cleanup_tracker.rb
good_job-4.3.0 lib/good_job/cleanup_tracker.rb
good_job-4.2.1 lib/good_job/cleanup_tracker.rb
good_job-4.2.0 lib/good_job/cleanup_tracker.rb
good_job-4.1.1 lib/good_job/cleanup_tracker.rb
good_job-4.1.0 lib/good_job/cleanup_tracker.rb
good_job-4.0.3 lib/good_job/cleanup_tracker.rb
good_job-4.0.2 lib/good_job/cleanup_tracker.rb