bensheldon/good_job · error · GoodJob::Error
Jobs must have a Queue Adapter
Error message
Jobs must have a Queue Adapter
What it means
Error "Jobs must have a Queue Adapter" thrown in bensheldon/good_job.
Source
Thrown at lib/good_job/bulk.rb:80
class Buffer
def initialize
@values = []
end
def capture
original_buffer = Bulk.current_buffer
Bulk.current_buffer = self
yield
ensure
Bulk.current_buffer = original_buffer
end
def add(active_jobs, queue_adapter: nil)
new_pairs = Array(active_jobs).map do |active_job|
raise ArgumentError, "Expected an ActiveJob::Base instance, got #{active_job.class}" unless active_job.is_a?(ActiveJob::Base)
adapter = queue_adapter || active_job.class.queue_adapter
raise Error, "Jobs must have a Queue Adapter" unless adapter
[active_job, adapter]
end
@values.append(*new_pairs)
true
end
def enqueue
Bulk.unbuffer do
active_jobs_by_queue_adapter.each do |adapter, jobs|
jobs = jobs.reject(&:provider_job_id) # Do not re-enqueue already enqueued jobs
if adapter.respond_to?(:enqueue_all)
unbulkable_jobs, bulkable_jobs = jobs.partition do |job|
job.respond_to?(:good_job_concurrency_key) && job.good_job_concurrency_key &&
(job.class.good_job_concurrency_config[:enqueue_limit] || job.class.good_job_concurrency_config[:total_limit])
endView on GitHub (pinned to 5fcde48f87)
Solutions
- Jobs enqueued via GoodJob::Bulk must use the GoodJob queue adapter.
- Set config.active_job.queue_adapter = :good_job or configure the adapter per job.
Example fix
config.active_job.queue_adapter = :good_job
When it happens
Trigger: Thrown at lib/good_job/bulk.rb:80 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/248e2be6aa1144d0.
Report an issue: GitHub.