class ENV_BANG

Constants

VERSION

Public Class Methods

[](var) click to toggle source
# File lib/env_bang.rb, line 44
def [](var)
  var = var.to_s
  raise KeyError.new("ENV_BANG is not configured to use var #{var}") unless vars.has_key?(var)

  Classes.cast ENV[var], vars[var]
end
add_class(klass, &block) click to toggle source
# File lib/env_bang.rb, line 55
def add_class(klass, &block)
  Classes.send :define_singleton_method, klass.to_s, &block
end
config(&block) click to toggle source
# File lib/env_bang.rb, line 7
def config(&block)
  instance_eval(&block)
end
default_class(*args) click to toggle source
# File lib/env_bang.rb, line 59
def default_class(*args)
  if args.any?
    Classes.default_class = args.first
  else
    Classes.default_class
  end
end
keys() click to toggle source
# File lib/env_bang.rb, line 36
def keys
  vars.keys
end
method_missing(method, *args, &block) click to toggle source
# File lib/env_bang.rb, line 51
def method_missing(method, *args, &block)
  ENV.send(method, *args, &block)
end
raise_formatted_error(var, description) click to toggle source
# File lib/env_bang.rb, line 26
def raise_formatted_error(var, description)
  e = KeyError.new(Formatter.formatted_error(var, description))
  e.set_backtrace(caller[3..-1])
  raise e
end
use(var, *args) click to toggle source
# File lib/env_bang.rb, line 11
def use(var, *args)
  var = var.to_s
  description = args.first.is_a?(String) ? args.shift : nil
  options = args.last.is_a?(Hash) ? args.pop : {}

  unless ENV.has_key?(var)
    ENV[var] = options.fetch(:default) { raise_formatted_error(var, description) }.to_s
  end

  vars[var] = options

  # Make sure reading/coercing the value works. If it's going to raise an error, raise it now.
  self[var]
end
values() click to toggle source
# File lib/env_bang.rb, line 40
def values
  keys.map { |k| self[k] }
end
vars() click to toggle source
# File lib/env_bang.rb, line 32
def vars
  @vars ||= {}
end