Class: SolidQueue::Job
- Includes:
- Batchable, Clearable, Executable, Recurrable
- Defined in:
- app/models/solid_queue/job.rb,
app/models/solid_queue/job/batchable.rb,
app/models/solid_queue/job/clearable.rb,
app/models/solid_queue/job/retryable.rb,
app/models/solid_queue/job/executable.rb,
app/models/solid_queue/job/recurrable.rb,
app/models/solid_queue/job/schedulable.rb,
app/models/solid_queue/job/concurrency_controls.rb
Defined Under Namespace
Modules: Batchable, Clearable, ConcurrencyControls, Executable, Recurrable, Retryable, Schedulable Classes: EnqueueError
Class Method Summary collapse
Methods included from Executable
#discard, #dispatch, #dispatch_bypassing_concurrency_limits, #finished!, #finished?, #prepare_for_execution, #status
Methods included from Batchable
Methods inherited from Record
non_blocking_lock, supports_insert_conflict_target?, use_index, warn_about_pending_migrations
Class Method Details
.enqueue(active_job, scheduled_at: Time.current) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'app/models/solid_queue/job.rb', line 35 def enqueue(active_job, scheduled_at: Time.current) active_job.scheduled_at = scheduled_at create_from_active_job(active_job).tap do |enqueued_job| active_job.provider_job_id = enqueued_job.id if enqueued_job.persisted? active_job.successfully_enqueued = enqueued_job.persisted? end end |
.enqueue_all(active_jobs) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/models/solid_queue/job.rb', line 12 def enqueue_all(active_jobs) # Bulk enqueues bypass ActiveJob#enqueue, so batch membership is captured here current_batch_id = Batch.current_batch_id active_jobs.each do |job| job.scheduled_at ||= Time.current job.batch_id = current_batch_id || job.batch_id end active_jobs_by_job_id = active_jobs.index_by(&:job_id) transaction do jobs = create_all_from_active_jobs(active_jobs) prepare_all_for_execution(jobs).tap do |enqueued_jobs| enqueued_jobs.each do |enqueued_job| active_jobs_by_job_id[enqueued_job.active_job_id].provider_job_id = enqueued_job.id active_jobs_by_job_id[enqueued_job.active_job_id].successfully_enqueued = true end end end active_jobs.count(&:successfully_enqueued?) end |