module Temporal::Saga::Concern

Public Instance Methods

run_saga(&block) click to toggle source
# File lib/temporal/saga/concern.rb, line 7
def run_saga(&block)
  saga = Temporal::Saga::Saga.new(workflow)

  block.call(saga)

  Result.new(true)
rescue StandardError => error # TODO: is there a need for a specialized error here?
  logger.error("Saga execution aborted", { error: error.inspect })
  logger.debug(error.backtrace.join("\n"))

  saga.compensate

  Result.new(false, error)
end