Skip to Content Skip to Search

Active Job Continuable

The Continuable module provides the ability to track the progress of your jobs, and continue from where they left off if interrupted.

Mix ActiveJob::Continuable into your job to enable continuations.

See ActiveJob::Continuation for usage.

Methods
N
S

Attributes

[RW] resumptions

The number of times the job has been resumed.

Class Public methods

new(...)

# File activejob/lib/active_job/continuable.rb, line 23
def initialize(...)
  super(...)
  self.resumptions = 0
  self.continuation = Continuation.new(self, {})
end

Instance Public methods

step(step_name, start: nil, isolated: false, &block)

Start a new continuation step

# File activejob/lib/active_job/continuable.rb, line 36
def step(step_name, start: nil, isolated: false, &block)
  unless block_given?
    step_method = method(step_name)

    raise ArgumentError, "Step method '#{step_name}' must accept 0 or 1 arguments" if step_method.arity > 1

    if step_method.parameters.any? { |type, name| type == :key || type == :keyreq }
      raise ArgumentError, "Step method '#{step_name}' must not accept keyword arguments"
    end

    block = step_method.arity == 0 ? -> (_) { step_method.call } : step_method
  end
  checkpoint! if continuation.advanced?
  continuation.step(step_name, start: start, isolated: isolated, &block)
end