Module: Toolx::Core::Env

Defined in:
lib/toolx/core/env.rb

Constant Summary collapse

MissingEnv =
Class.new(StandardError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](value) ⇒ Object



8
# File 'lib/toolx/core/env.rb', line 8

def self.[](value) = env_variable!(value)

.allObject



9
# File 'lib/toolx/core/env.rb', line 9

def self.all = ENV

.boolean(value, default) ⇒ Object



23
24
25
26
# File 'lib/toolx/core/env.rb', line 23

def self.boolean(value, default, &)
  result = env_variable!(value, default, &).to_s.downcase
  ActiveModel::Type::Boolean.new.cast(result)
end

.env_variable!(value, default = nil) ⇒ Object



38
39
40
41
42
# File 'lib/toolx/core/env.rb', line 38

def self.env_variable!(value, default = nil, &)
  default ? ENV.fetch(value.to_s.upcase, default, &) : ENV.fetch(value.to_s.upcase, &)
rescue KeyError
  raise MissingEnv, "Missing: #{value.upcase} env variable"
end

.inquirer(value, default) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/toolx/core/env.rb', line 30

def self.inquirer(value, default, &)
  result = env_variable!(value, default, &)
  return ::Toolx::Core::Concerns::Inquirer.nil_value if result.blank?
  return ::Toolx::Core::Concerns::Inquirer::SymbolInquiry.new(result) if result.is_a?(Symbol)

  result.inquiry
end

.integer(value, default) ⇒ Object



28
# File 'lib/toolx/core/env.rb', line 28

def self.integer(value, default, &) = env_variable!(value, default, &).to_i

.method_missing(method_name, default = nil) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/toolx/core/env.rb', line 11

def self.method_missing(method_name, default = nil, &)
  name = method_name.to_s
  return boolean(name[0..-2], default, &) if name[-1] == '?'
  return integer(name[0..-2], default, &) if name[-1] == '!'
  return inquirer(name[0..-2], default, &) if name[-1] == '_'

  env_variable!(name, default, &)
end

.respond_to?(*_args) ⇒ Boolean

Returns:



20
# File 'lib/toolx/core/env.rb', line 20

def self.respond_to?(*_args) = true

Instance Method Details

#respond_to_missing?(*_args) ⇒ Boolean

Returns:



21
# File 'lib/toolx/core/env.rb', line 21

def respond_to_missing?(*_args) = true