Module: Dry
- Defined in:
- lib/dry/transaction.rb,
lib/dry/transaction/dsl.rb,
lib/dry/transaction/step.rb,
lib/dry/transaction/stack.rb,
lib/dry/transaction/errors.rb,
lib/dry/transaction/builder.rb,
lib/dry/transaction/version.rb,
lib/dry/transaction/callable.rb,
lib/dry/transaction/operation.rb,
lib/dry/transaction/step_adapter.rb,
lib/dry/transaction/step_failure.rb,
lib/dry/transaction/step_adapters.rb,
lib/dry/transaction/result_matcher.rb,
lib/dry/transaction/instance_methods.rb,
lib/dry/transaction/step_adapters/map.rb,
lib/dry/transaction/step_adapters/raw.rb,
lib/dry/transaction/step_adapters/tee.rb,
lib/dry/transaction/step_adapters/try.rb,
lib/dry/transaction/operation_resolver.rb,
lib/dry/transaction/step_adapters/check.rb,
lib/dry/transaction/step_adapters/around.rb
Defined Under Namespace
Modules: Transaction
Class Method Summary collapse
-
.Transaction(container: nil, step_adapters: Transaction::StepAdapters) ⇒ Module
Build a module to make your class a business transaction.
Class Method Details
.Transaction(container: nil, step_adapters: Transaction::StepAdapters) ⇒ Module
Build a module to make your class a business transaction.
A business transaction is a series of callable operation objects that receive input and produce an output.
The operations can be instance methods, or objects addressable via #[]
in
a container object that you pass when mixing in this module. The operations
must respond to #call(input, *args)
.
Each operation will be called in the order it was specified in your transaction, with its output passed as the input to the next operation. Operations will only be called if the previous step was a success.
A step is successful when it returns a dry-monads Success
object wrapping its output value. A step is a failure when it returns a
Failure
object. If your operations already return a Success
or Failure
, they
can be added to your operation as plain step
steps.
Add operation to your transaction with the step
method.
If your operations don't already return Success
or Failure
, then they can be
added to the transaction with the following steps:
check
--- wrap original input inSuccess
orFailure
according to operation return value, and pass it as output.map
--- wrap the output of the operation in aSuccess
try
--- wrap the output of the operation in aSuccess
, unless a certain exception is raised, which will be caught and returned as aFailure
.tee
--- ignore the output of the operation and pass through its original input as aSuccess
custom container of step adapters
76 77 78 |
# File 'lib/dry/transaction.rb', line 76 def self.Transaction(container: nil, step_adapters: Transaction::StepAdapters) Transaction::Builder.new(container: container, step_adapters: step_adapters) end |