Sha256: a8b39b415d399b168847b0115de1959ed60acba662db7012ea59c3d8b50ee8de
Contents?: true
Size: 1.08 KB
Versions: 2
Compression:
Stored size: 1.08 KB
Contents
# frozen_string_literal: true module Dry module Transaction class DSL < Module def initialize(step_adapters:) super() @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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-transaction-0.16.0 | lib/dry/transaction/dsl.rb |
dry-transaction-0.15.0 | lib/dry/transaction/dsl.rb |