Module: Kreds::Fetch

Included in:
Kreds
Defined in:
lib/kreds/fetch.rb

Instance Method Summary collapse

Instance Method Details

#env_fetch!(*keys, var: nil) ⇒ Object



16
17
18
# File 'lib/kreds/fetch.rb', line 16

def env_fetch!(*keys, var: nil, &)
  fetch!(Rails.env, *Kreds::Inputs.process(keys, as: :symbol_array), var:, &)
end

#fetch!(*keys, var: nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/kreds/fetch.rb', line 3

def fetch!(*keys, var: nil, &)
  symbolized_keys = Kreds::Inputs.process(keys, as: :symbol_array)

  path = []

  symbolized_keys.reduce(Rails.application.credentials) do |hash, key|
    path << key
    fetch_key(hash, key, path, symbolized_keys)
  end
rescue Kreds::BlankCredentialsError, Kreds::UnknownCredentialsError => e
  fallback_to_var(e, Kreds::Inputs.process(var, as: :non_empty_string, optional: true), &)
end

#var!(var) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/kreds/fetch.rb', line 20

def var!(var, &)
  value = ENV.fetch(Kreds::Inputs.process(var, as: :non_empty_string))

  return raise_or_yield(Kreds::BlankEnvironmentVariableError.new("Blank value in environment variable: #{var.inspect}"), &) if value.blank?

  value
rescue KeyError
  raise_or_yield(Kreds::UnknownEnvironmentVariableError.new("Environment variable not found: #{var.inspect}"), &)
end