instance method interrupt_job_after_step

Ruby on Rails edge

Since v8.1.3.1

Available in: v8.1.3.1 edge

Signature

interrupt_job_after_step(job_class, step, reason: true, &block)

Interrupt a job after a step.

Note that there’s no checkpoint after the final step so it won’t be interrupted.

class MyJob < ApplicationJob
  include ActiveJob::Continuable

  cattr_accessor :items, default: []

  def perform
    step(:step_one) { items << 1 }
    step(:step_two) { items << 2 }
    step(:step_three) { items << 3 }
    step(:step_four) { items << 4 }
  end
end

test "interrupt job after step" do
  MyJob.perform_later
  interrupt_job_after_step(MyJob, :step_two) { perform_enqueued_jobs }
  assert_equal [1, 2], MyJob.items
  perform_enqueued_jobs
  assert_equal [1, 2, 3, 4], MyJob.items
end

A custom interrupt reason can be provided with the reason argument.

Parameters

job_class req
step req
reason key = true
block block
Source
# File activejob/lib/active_job/continuation/test_helper.rb, line 70
      def interrupt_job_after_step(job_class, step, reason: true, &block)
        require_active_job_test_adapter!("interrupt_job_after_step")
        stopping = ->(job) { reason if job.is_a?(job_class) && after_step?(job, step) }
        queue_adapter.with(stopping: stopping, &block)
      end

Defined in activejob/lib/active_job/continuation/test_helper.rb line 70 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveJob::Continuation::TestHelper

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close