bensheldon/good_job · error · ArgumentError

Must provide exactly one of queue, job_class, or label

Error message

Must provide exactly one of queue, job_class, or label

What it means

Error "Must provide exactly one of queue, job_class, or label" thrown in bensheldon/good_job.

Source

Thrown at app/models/good_job/setting.rb:63

    end

    def self.cron_key_disable(key)
      enabled_setting = GoodJob::Setting.find_by(key: CRON_KEYS_ENABLED)
      key_string = key.to_s
      if enabled_setting&.value&.include?(key_string)
        enabled_setting.value.delete(key_string)
        enabled_setting.save!
      end

      disabled_setting = find_or_initialize_by(key: CRON_KEYS_DISABLED) do |record|
        record.value = []
      end
      disabled_setting.value << key unless disabled_setting.value.include?(key_string)
      disabled_setting.save!
    end

    def self.pause(queue: nil, job_class: nil, label: nil)
      raise ArgumentError, "Must provide exactly one of queue, job_class, or label" unless [queue, job_class, label].one?(&:present?)

      setting = find_or_initialize_by(key: PAUSES) do |record|
        record.value = { "queues" => [], "job_classes" => [], "labels" => [] }
      end

      if queue
        setting.value["queues"] ||= []
        setting.value["queues"] << queue.to_s unless setting.value["queues"].include?(queue.to_s)
      elsif job_class
        setting.value["job_classes"] ||= []
        setting.value["job_classes"] << job_class.to_s unless setting.value["job_classes"].include?(job_class.to_s)
      else
        setting.value["labels"] ||= []
        setting.value["labels"] << label.to_s unless setting.value["labels"].include?(label.to_s)
      end
      setting.save!
    end

View on GitHub (pinned to 5fcde48f87)

Solutions

  1. Pass exactly one of :queue, :job_class, or :label when looking up the setting.
  2. Remove extra selector arguments so exactly one is given.

Example fix

GoodJob::Setting.queue_key(queue: 'default')

When it happens

Trigger: Thrown at app/models/good_job/setting.rb:63 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/563b95bbf84fd884. Report an issue: GitHub.