Module: CommandTower::Transactional

Included in:
Services::ApplicationService, Workflows::ApplicationWorkflow
Defined in:
app/workflows/command_tower/transactional.rb

Overview

Generic ActiveRecord atomic boundary shared by ApplicationWorkflow and ApplicationService. Layer-specific result contracts are supplied by includers.

Defined Under Namespace

Classes: InvalidTransactionResult, TransactionFailure

Instance Method Summary collapse

Instance Method Details

#fail_transaction!(result) ⇒ Object

Raises:



29
30
31
32
33
34
35
# File 'app/workflows/command_tower/transactional.rb', line 29

def fail_transaction!(result)
  unless acceptable_failure_result?(result)
    raise InvalidTransactionResult, fail_transaction_type_error_message
  end

  raise TransactionFailure.new(result)
end

#transactionObject



18
19
20
21
22
23
24
25
26
27
# File 'app/workflows/command_tower/transactional.rb', line 18

def transaction
  result = nil
  ActiveRecord::Base.transaction do
    result = yield
    validate_transaction_success!(result)
  end
  result
rescue TransactionFailure => e
  handle_transaction_failure(e.result)
end