{"record":{"id":"248e2be6aa1144d0","repo":"bensheldon/good_job","slug":"jobs-must-have-a-queue-adapter","errorCode":null,"errorMessage":"Jobs must have a Queue Adapter","messagePattern":"Jobs must have a Queue Adapter","errorType":"exception","errorClass":"GoodJob::Error","httpStatus":null,"severity":"error","filePath":"lib/good_job/bulk.rb","lineNumber":80,"sourceCode":"    class Buffer\n      def initialize\n        @values = []\n      end\n\n      def capture\n        original_buffer = Bulk.current_buffer\n        Bulk.current_buffer = self\n        yield\n      ensure\n        Bulk.current_buffer = original_buffer\n      end\n\n      def add(active_jobs, queue_adapter: nil)\n        new_pairs = Array(active_jobs).map do |active_job|\n          raise ArgumentError, \"Expected an ActiveJob::Base instance, got #{active_job.class}\" unless active_job.is_a?(ActiveJob::Base)\n\n          adapter = queue_adapter || active_job.class.queue_adapter\n          raise Error, \"Jobs must have a Queue Adapter\" unless adapter\n\n          [active_job, adapter]\n        end\n        @values.append(*new_pairs)\n\n        true\n      end\n\n      def enqueue\n        Bulk.unbuffer do\n          active_jobs_by_queue_adapter.each do |adapter, jobs|\n            jobs = jobs.reject(&:provider_job_id) # Do not re-enqueue already enqueued jobs\n\n            if adapter.respond_to?(:enqueue_all)\n              unbulkable_jobs, bulkable_jobs = jobs.partition do |job|\n                job.respond_to?(:good_job_concurrency_key) && job.good_job_concurrency_key &&\n                  (job.class.good_job_concurrency_config[:enqueue_limit] || job.class.good_job_concurrency_config[:total_limit])\n              end","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/bensheldon/good_job/blob/5fcde48f8765e69901ffa9c5a06122b19c73875f/lib/good_job/bulk.rb#L62-L98","documentation":"Error \"Jobs must have a Queue Adapter\" thrown in bensheldon/good_job.","triggerScenarios":"Thrown at lib/good_job/bulk.rb:80 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":"config.active_job.queue_adapter = :good_job","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5fcde48f8765e69901ffa9c5a06122b19c73875f","analyzedAt":"2026-08-23T14:55:11.399Z","schemaVersion":2},"datasetVersion":"2026-08-23T16:17:53.355Z"}