Sha256: 5e29b91d2087387fb68e32ba538af5c120bc5320da1e7342ebf04a70a416cfa6
Contents?: true
Size: 1.06 KB
Versions: 4
Compression:
Stored size: 1.06 KB
Contents
# frozen_string_literal: true module Dry module Transaction class DSL < Module def initialize(step_adapters:) @step_adapters = step_adapters define_steps define_dsl end def inspect "Dry::Transaction::DSL(#{@step_adapters.keys.sort.join(', ')})" end private def define_steps module_eval do define_method(:steps) do @steps ||= [] end end end def define_dsl module_exec(@step_adapters) do |step_adapters| step_adapters.each do |adapter_name, adapter| define_method(adapter_name) do |step_name, with: nil, **options| operation_name = with steps << Step.new( adapter: adapter, name: step_name, operation_name: operation_name, operation: nil, # operations are resolved only when transactions are instantiated options: options, ) end end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems