class DispatchRider::ScheduledJob

Public Class Methods

publish_due_jobs(every: nil) click to toggle source

@param [ActiveSupport::Duration] every @example: DispatchRider::ScheduledJob.publish_due_jobs every 1.minute

# File lib/dispatch-rider/scheduled_job.rb, line 19
def publish_due_jobs(every: nil)
  loop {
    claim_stub = get_new_claim_stub
    due.unclaimed.update_all claim_stub
    due.claimed_by(claim_stub[:claim_id]).find_each(&:publish)
    every ? sleep(every) : break # until the next loop
  }
end
publisher() click to toggle source
# File lib/dispatch-rider/scheduled_job.rb, line 13
def publisher
  @publisher ||= Publisher.new
end

Private Class Methods

get_new_claim_stub() click to toggle source
# File lib/dispatch-rider/scheduled_job.rb, line 30
def get_new_claim_stub
  { claim_id: SecureRandom.uuid, claim_expires_at: 30.minutes.from_now }
end

Public Instance Methods

publish() click to toggle source
# File lib/dispatch-rider/scheduled_job.rb, line 47
def publish
  publisher.publish(destinations: destinations, message: message)

  destroy # once published
end