Class: Dry::Effects::Effects::Defer

Inherits:
Module
  • Object
show all
Defined in:
lib/dry/effects/effects/defer.rb

Constant Summary collapse

Defer =
Effect.new(type: :defer, name: :defer)
Later =
Effect.new(type: :defer, name: :later)
Wait =
Effect.new(type: :defer, name: :wait)

Instance Method Summary collapse

Constructor Details

#initializeDefer

Returns a new instance of Defer.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/dry/effects/effects/defer.rb', line 11

def initialize
  super

  module_eval do
    define_method(:defer) do |executor: Undefined, &block|
      ::Dry::Effects.yield(Defer.(block, executor))
    end

    define_method(:wait) do |promises|
      ::Dry::Effects.yield(Wait.(promises))
    end

    define_method(:later) do |executor: Undefined, &block|
      ::Dry::Effects.yield(Later.(block, executor))
    end
  end
end