class Dry::Transaction::StepAdapter

@api private

Attributes

adapter[R]
operation[R]
options[R]

Public Class Methods

[](adapter, operation, options) click to toggle source
# File lib/dry/transaction/step_adapter.rb, line 9
def self.[](adapter, operation, options)
  if adapter.is_a?(self)
    adapter.with(operation, options)
  else
    new(adapter, operation, options)
  end
end
new(adapter, operation, options) click to toggle source
# File lib/dry/transaction/step_adapter.rb, line 21
def initialize(adapter, operation, options)
  @adapter = case adapter
             when Proc, Method
               adapter
             else
               adapter.method(:call)
             end

  @operation = Callable[operation]

  @options = options

  @yields = @adapter
    .parameters
    .any? { |type, _| type == :block }
end

Public Instance Methods

call(args, &block) click to toggle source
# File lib/dry/transaction/step_adapter.rb, line 42
def call(args, &block)
  adapter.(operation, options, args, &block)
end
with(operation = self.operation, new_options = {}) click to toggle source
# File lib/dry/transaction/step_adapter.rb, line 46
def with(operation = self.operation, new_options = {})
  self.class.new(adapter, operation, options.merge(new_options))
end
yields?() click to toggle source
# File lib/dry/transaction/step_adapter.rb, line 38
def yields?
  @yields
end