class SideJob::Job

Wrapper for a job which may not be in progress unlike SideJob::Worker. @see SideJob::JobMethods

Public Class Methods

new(alias_or_id) click to toggle source

@param alias_or_id [String, Integer] Job alias or id

# File lib/sidejob/job.rb, line 478
def initialize(alias_or_id)
  @id = (SideJob.redis.hget('jobs:aliases', alias_or_id.to_s) || alias_or_id).to_i
  check_exists
end

Public Instance Methods

run_inline(errors: true, queue: true, args: []) click to toggle source

Runs a single job once. This method only works for jobs with no child jobs. @param errors [Boolean] Whether to propagate errors that occur in jobs (default true) @param queue [Boolean] Whether to force the job to be queued (default true) @param args [Array] Args to pass to the worker’s perform method (default none)

# File lib/sidejob/testing.rb, line 31
def run_inline(errors: true, queue: true, args: [])
  self.status = 'queued' if queue

  worker_info = JSON.parse(SideJob.redis.get("#{redis_key}:worker"))
  worker = worker_info['class'].constantize.new
  worker.jid = id
  SideJob::ServerMiddleware.raise_errors = errors
  SideJob::ServerMiddleware.new.call(worker, {}, worker_info['queue']) do
    worker.perform(*args)
  end
ensure
  SideJob::ServerMiddleware.raise_errors = false
end