Spec-Zone.ru › Ruby on Rails 8.1

class ActiveJob::Continuation::Step

Родительский класс:
Object

Active Job Continuation Step

Представляет шаг в возобновляемом задании.

Когда шаг завершается, он записывается в состояние продолжения задания. Если выполнение задания прерывается, оно возобновляется после последнего завершённого шага.

У шагов также может быть необязательный курсор, с помощью которого можно отслеживать ход выполнения шага. Если выполнение задания прерывается во время шага, курсор сохраняется и передаётся при возобновлении задания.

Код шага отвечает за правильное использование курсора, чтобы продолжить выполнение с того места, где оно было прервано.

Атрибуты

cursor [R]

Курсор шага.

name [R]

Имя шага.

Открытые методы класса

new (name, cursor, job:, resumed:) Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 25
def initialize(name, cursor, job:, resumed:)
  @name = name.to_sym
  @initial_cursor = cursor
  @cursor = cursor
  @resumed = resumed
  @job = job
end

Открытые методы экземпляра

advance! (from: nil) Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 49
def advance!(from: nil)
  from = cursor if from.nil?

  begin
    to = from.succ
  rescue NoMethodError
    raise UnadvanceableCursorError, "Cursor class '#{from.class}' does not implement 'succ'"
  end

  set! to
end

Продвинуть курсор от текущего или указанного значения

Курсор будет продвинут вызовом метода succ для курсора. Если курсор не реализует succ, будет вызвана ошибка UnadvanceableCursorError.

advanced? () Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 67
def advanced?
  initial_cursor != cursor
end

Был ли курсор продвинут во время выполнения этого задания?

checkpoint! () Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 35
def checkpoint!
  job.checkpoint!
end

Проверить, нужно ли прервать задание, и в этом случае вызвать исключение Interrupt. Задание будет повторно поставлено в очередь.

description () Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 75
def description
  "at '#{name}', cursor '#{cursor.inspect}'"
end
resumed? () Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 62
def resumed?
  @resumed
end

Был ли этот шаг возобновлён после предыдущего выполнения задания?

set! (cursor) Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 40
def set!(cursor)
  @cursor = cursor
  checkpoint!
end

Установить курсор и при необходимости прервать задание.

to_a () Показать исходный код
# File activejob/lib/active_job/continuation/step.rb, line 71
def to_a
  [ name.to_s, cursor ]
end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API