Module: Hopscotch::Runners::Default

Extended by:
Default
Included in:
Default
Defined in:
lib/hopscotch/runners/default.rb

Instance Method Summary collapse

Instance Method Details

#call(fn, failure:, success:) ⇒ Object

Execute ‘fn` within an `ActiveRecord` transaction.

Rough types: “‘

fn

void -> ReturnValue

failure

value -> NilClass

success

value -> NilClass

# or

success

void -> NilClass

“‘

If ‘fn` returns an `ErrorValue`, roll back the transaction and call `failure` with the unwrapped error `value`. Otherwise commit the transaction and call success.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/hopscotch/runners/default.rb', line 20

def call(fn, failure:, success:)
  error = nil
  result = nil

  ActiveRecord::Base.transaction do
    result = fn.call

    if Hopscotch::Error.error?(result)
      error = result
      raise ActiveRecord::Rollback
    end
  end

  if error
    failure.call(error.value)
  else
    success.arity == 1 ? success.call(result) : success.call
  end
end

#call_each(*fns, failure:, success:) ⇒ Object

‘call_each` composes a list of functions into a single function which it then passes along to a `call` to perform the workflow logic.

Each fn should have the rough type: “‘

fn

void -> ReturnValue

“‘



48
49
50
# File 'lib/hopscotch/runners/default.rb', line 48

def call_each(*fns, failure:, success:)
  call ::Hopscotch::StepComposers::Default.compose_with_error_handling(*fns), failure: failure, success: success
end