Class: SideJob::Job

Inherits:
Object
  • Object
show all
Includes:
JobMethods
Defined in:
lib/sidejob/job.rb,
lib/sidejob/testing.rb

Overview

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

See Also:

Instance Attribute Summary

Attributes included from JobMethods

#id

Instance Method Summary collapse

Methods included from JobMethods

#==, #add_alias, #adopt, #aliases, #child, #children, #delete, #disown, #eql?, #exists?, #get, #hash, #info, #inports, #inports=, #input, #lock, #outports, #outports=, #output, #parent, #publish, #queue, #redis_key, #refresh_lock, #remove_alias, #run, #set, #state, #status, #status=, #terminate, #terminated?, #unlock, #unset

Constructor Details

#initialize(alias_or_id) ⇒ Job

Returns a new instance of Job.

Parameters:

  • alias_or_id (String, Integer)

    Job alias or id



478
479
480
481
# 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

Instance Method Details

#run_inline(errors: true, queue: true, args: []) ⇒ Object

Runs a single job once. This method only works for jobs with no child jobs.

Parameters:

  • errors (Boolean) (defaults to: true)

    Whether to propagate errors that occur in jobs (default true)

  • queue (Boolean) (defaults to: true)

    Whether to force the job to be queued (default true)

  • args (Array) (defaults to: [])

    Args to pass to the worker's perform method (default none)



31
32
33
34
35
36
37
38
39
40
41
42
43
# 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