class Spokes::Config::Env

Public Class Methods

load(&blk) click to toggle source
# File lib/spokes/config/env.rb, line 4
def self.load(&blk)
  new(&blk)
end
new(&blk) click to toggle source
# File lib/spokes/config/env.rb, line 8
def initialize(&blk)
  instance_eval(&blk)
end

Public Instance Methods

array() click to toggle source
# File lib/spokes/config/env.rb, line 27
def array
  ->(v) { v.nil? ? [] : v.split(',') }
end
bool() click to toggle source
# File lib/spokes/config/env.rb, line 39
def bool
  ->(v) { v.to_s == 'true' }
end
default(name, default, method = nil) click to toggle source
# File lib/spokes/config/env.rb, line 22
def default(name, default, method = nil)
  value = cast(ENV.fetch(name.to_s.upcase, default), method)
  create(name, value)
end
float() click to toggle source
# File lib/spokes/config/env.rb, line 35
def float
  ->(v) { v.to_f }
end
int() click to toggle source
# File lib/spokes/config/env.rb, line 31
def int
  ->(v) { v.to_i }
end
mandatory(name, method = nil) click to toggle source
# File lib/spokes/config/env.rb, line 12
def mandatory(name, method = nil)
  value = cast(ENV.fetch(name.to_s.upcase), method)
  create(name, value)
end
optional(name, method = nil) click to toggle source
# File lib/spokes/config/env.rb, line 17
def optional(name, method = nil)
  value = cast(ENV[name.to_s.upcase], method)
  create(name, value)
end
string() click to toggle source
# File lib/spokes/config/env.rb, line 43
def string
  nil
end
symbol() click to toggle source
# File lib/spokes/config/env.rb, line 47
def symbol
  ->(v) { v.nil? ? nil : v.to_sym }
end

Private Instance Methods

cast(value, method) click to toggle source
# File lib/spokes/config/env.rb, line 53
def cast(value, method)
  method ? method.call(value) : value
end
create(name, value) click to toggle source
# File lib/spokes/config/env.rb, line 57
def create(name, value)
  instance_variable_set(:"@#{name}", value)
  instance_eval "def #{name}; @#{name} end", __FILE__, __LINE__
  return unless value.is_a?(TrueClass) || value.is_a?(FalseClass) || value.is_a?(NilClass)
  instance_eval "def #{name}?; !!@#{name} end", __FILE__, __LINE__
end