class Dry::Effects::Providers::Env

Constants

Locate

Attributes

parent[R]

Public Instance Methods

call(values = EMPTY_HASH, options = EMPTY_HASH) { || ... } click to toggle source

Yield the block with the handler installed

@api private

# File lib/dry/effects/providers/env.rb, line 44
def call(values = EMPTY_HASH, options = EMPTY_HASH)
  unless values.empty?
    @values = @values.merge(values)
  end

  if options.fetch(:overridable, false)
    @parent = ::Dry::Effects.yield(Locate) { EMPTY_HASH }
  else
    @parent = EMPTY_HASH
  end

  yield
end
key?(key) click to toggle source
# File lib/dry/effects/providers/env.rb, line 69
def key?(key)
  values.key?(key) || key.is_a?(::String) && ::ENV.key?(key) || parent.key?(key)
end
locate() click to toggle source

Locate handler in the stack

@return [Provider] @api private

# File lib/dry/effects/providers/env.rb, line 37
def locate
  self
end
provide?(effect) click to toggle source

@param [Effect] effect @return [Boolean] @api public

Calls superclass method
# File lib/dry/effects/providers/env.rb, line 61
def provide?(effect)
  if super
    !effect.name.equal?(:read) || key?(effect.payload[0])
  else
    false
  end
end
read(key) click to toggle source
# File lib/dry/effects/providers/env.rb, line 18
def read(key)
  parent.fetch(key) { fetch(key) }
end

Protected Instance Methods

fetch(key) { || ... } click to toggle source
# File lib/dry/effects/providers/env.rb, line 22
def fetch(key)
  values.fetch(key) do
    if key.is_a?(::String) && ::ENV.key?(key)
      ::ENV[key]
    else
      yield
    end
  end
end