Class: Savvy::EnvironmentReader

Inherits:
Object
  • Object
show all
Defined in:
lib/savvy/environment_reader.rb

Instance Method Summary collapse

Constructor Details

#initialize(env = ENV) ⇒ EnvironmentReader

Returns a new instance of EnvironmentReader.

Parameters:

  • env (#[]) (defaults to: ENV)


8
9
10
# File 'lib/savvy/environment_reader.rb', line 8

def initialize(env = ENV)
  @env = env
end

Instance Method Details

#[](*names, presence: true, raise_error: false, **options) ⇒ Object

Like #fetch, but with ‘raise_error` set to false and `presence` set to true.

Parameters:

  • names (<String>)
  • presence (Boolean) (defaults to: true)


16
17
18
19
20
21
# File 'lib/savvy/environment_reader.rb', line 16

def [](*names, presence: true, raise_error: false, **options)
  options[:raise_error] = raise_error
  options[:presence] = presence

  fetch(*names, **options)
end

#fetch(*names, fallback: NONE, raise_error: true, presence: false) ⇒ Object

Parameters:

  • names (<String>)
  • fallback (Object) (defaults to: NONE)
  • []


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/savvy/environment_reader.rb', line 26

def fetch(*names, fallback: NONE, raise_error: true, presence: false)
  names.flatten!

  names.each do |name|
    if ( presence && has_value?(name) ) || set?(name)
      return @env[name]
    end
  end

  if fallback != NONE
    return fallback
  elsif raise_error
    raise ArgumentError, "No #{'present ' if presence}env value found for #{names.join(', ')}"
  end
end

#has_value?(var) ⇒ Boolean

Check if the environment has a present value set.

Parameters:

  • var (String)

Returns:

  • (Boolean)


46
47
48
# File 'lib/savvy/environment_reader.rb', line 46

def has_value?(var)
  set?(var) && Dux.presentish?(@env[var])
end

#set?(var) ⇒ Boolean

Checks only if the variable is set, not necessarily that it is non-empty.

Parameters:

  • var (String)

Returns:

  • (Boolean)


54
55
56
# File 'lib/savvy/environment_reader.rb', line 54

def set?(var)
  @env.key?(var)
end