Class: SolidQueue::Job

Inherits:
Record
  • Object
show all
Includes:
Clearable, Executable, Recurrable
Defined in:
lib/solid_queue_mongoid/models/job.rb,
lib/solid_queue_mongoid/models/classes.rb,
lib/solid_queue_mongoid/models/job/clearable.rb,
lib/solid_queue_mongoid/models/job/retryable.rb,
lib/solid_queue_mongoid/models/job/executable.rb,
lib/solid_queue_mongoid/models/job/recurrable.rb,
lib/solid_queue_mongoid/models/job/schedulable.rb,
lib/solid_queue_mongoid/models/job/concurrency_controls.rb

Defined Under Namespace

Modules: Clearable, ConcurrencyControls, Executable, Recurrable, Retryable, Schedulable Classes: EnqueueError

Constant Summary collapse

DEFAULT_PRIORITY =
0
DEFAULT_QUEUE_NAME =
"default"

Constants inherited from Record

Record::INDEX_HINTS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Executable

#discard, #dispatch, #dispatch_bypassing_concurrency_limits, #execution, #finished!, #finished?, #prepare_for_execution, #ready, #status

Methods inherited from Record

create_or_find_by!, find_by!, index, index_specifications, index_specifications=, inherited, non_blocking_lock, supports_insert_conflict_target?, transaction, use_index

Class Method Details

.enqueue(active_job, scheduled_at: Time.current) ⇒ Object

Primary enqueue entry point — called by the ActiveJob adapter.



36
37
38
39
40
41
42
43
44
45
# File 'lib/solid_queue_mongoid/models/job.rb', line 36

def enqueue(active_job, scheduled_at: Time.current)
  active_job.scheduled_at = scheduled_at

  create_from_active_job(active_job).tap do |enqueued_job|
    if enqueued_job.persisted?
      active_job.provider_job_id = enqueued_job.id.to_s
      active_job.successfully_enqueued = true
    end
  end
end

.enqueue_all(active_jobs) ⇒ Object

Bulk enqueue — called by the ActiveJob adapter for perform_all_later.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/solid_queue_mongoid/models/job.rb', line 48

def enqueue_all(active_jobs)
  active_jobs.each { |job| job.scheduled_at = Time.current }
  active_jobs_by_job_id = active_jobs.index_by(&:job_id)

  jobs = create_all_from_active_jobs(active_jobs)

  prepare_all_for_execution(jobs).tap do |enqueued_jobs|
    enqueued_jobs.each do |enqueued_job|
      aj = active_jobs_by_job_id[enqueued_job.active_job_id]
      next unless aj

      aj.provider_job_id = enqueued_job.id.to_s
      aj.successfully_enqueued = true
    end
  end

  active_jobs.count(&:successfully_enqueued?)
end

Instance Method Details

#deserialize_for_active_job ⇒ Object



99
100
101
# File 'lib/solid_queue_mongoid/models/job.rb', line 99

def deserialize_for_active_job
  ActiveJob::Base.deserialize(arguments)
end