Module: RocketJob::Concerns::Worker::ClassMethods

Defined in:
lib/rocket_job/concerns/worker.rb

Instance Method Summary collapse

Instance Method Details

#build(method, *args, &block) ⇒ Object

Build a Rocket Job instance

Note:

- #save! must be called on the return job instance if it needs to be
  queued for processing.
- If data is uploaded into the job instance before saving, and is then
  discarded, call #cleanup! to clear out any partially uploaded data


47
48
49
50
51
52
# File 'lib/rocket_job/concerns/worker.rb', line 47

def build(method, *args, &block)
  job = new(arguments: args, perform_method: method.to_sym)
  @rocket_job_defaults.call(job) if @rocket_job_defaults
  block.call(job) if block
  job
end

#later(method, *args, &block) ⇒ Object

Returns [Job] after queue-ing it for processing



19
20
21
22
23
24
25
26
27
# File 'lib/rocket_job/concerns/worker.rb', line 19

def later(method, *args, &block)
  if RocketJob::Config.inline_mode
    now(method, *args, &block)
  else
    job = build(method, *args, &block)
    job.save!
    job
  end
end

#now(method, *args, &block) ⇒ Object

Create a job and process it immediately in-line by this thread



30
31
32
33
34
35
36
37
38
# File 'lib/rocket_job/concerns/worker.rb', line 30

def now(method, *args, &block)
  job = build(method, *args, &block)
  worker = RocketJob::Worker.new(name: 'inline')
  worker.started
  job.start
  while job.running? && !job.work(worker)
  end
  job
end

#perform_build(*args, &block) ⇒ Object

Method to be performed later



60
61
62
# File 'lib/rocket_job/concerns/worker.rb', line 60

def perform_build(*args, &block)
  build(:perform, *args, &block)
end

#perform_later(*args, &block) ⇒ Object

Method to be performed later



55
56
57
# File 'lib/rocket_job/concerns/worker.rb', line 55

def perform_later(*args, &block)
  later(:perform, *args, &block)
end

#perform_now(*args, &block) ⇒ Object

Method to be performed now



65
66
67
# File 'lib/rocket_job/concerns/worker.rb', line 65

def perform_now(*args, &block)
  now(:perform, *args, &block)
end

#rocket_job(&block) ⇒ Object

Define job defaults



70
71
72
73
# File 'lib/rocket_job/concerns/worker.rb', line 70

def rocket_job(&block)
  @rocket_job_defaults = block
  self
end