class EnvSetting

Constants

VERSION

Public Class Methods

[](var) click to toggle source
# File lib/env_setting.rb, line 94
def self.[](var)
  self.get_value(var)
end
add_class(klass, &block) click to toggle source
# File lib/env_setting.rb, line 38
def self.add_class(klass, &block)
  Classes.send :define_singleton_method, klass.to_s, &block
end
config(&block) click to toggle source
# File lib/env_setting.rb, line 6
def self.config(&block)
  class_eval(&block)
end
default_class(*args) click to toggle source
# File lib/env_setting.rb, line 42
def self.default_class(*args)
  if args.any?
    Classes.default_class = args.first
  else
    Classes.default_class
  end
end
default_falsey_regex(regex = nil) click to toggle source
# File lib/env_setting.rb, line 50
def self.default_falsey_regex(regex = nil)
  if regex
    Classes.default_falsey_regex = regex
  else
    Classes.default_falsey_regex
  end
end
get_value(var) click to toggle source
# File lib/env_setting.rb, line 87
def self.get_value(var)
  var = var.to_s
  raise KeyError.new("#{var} is not configured in the ENV") unless vars.has_key?(var)

  Classes.cast ENV[var], vars[var]
end
instance() click to toggle source
# File lib/env_setting.rb, line 66
def self.instance
  @@instance ||= new
end
keys() click to toggle source
# File lib/env_setting.rb, line 79
def self.keys
  vars.keys
end
method_missing(method, *args, &block) click to toggle source
# File lib/env_setting.rb, line 62
def self.method_missing(method, *args, &block)
  instance.send(method, *args, &block)
end
raise_formatted_error(var, description) click to toggle source
# File lib/env_setting.rb, line 34
def self.raise_formatted_error(var, description)
  raise KeyError.new Formatter.formatted_error(var, description)
end
respond_to?(method_sym) click to toggle source
Calls superclass method
# File lib/env_setting.rb, line 58
def self.respond_to?(method_sym)
  instance.respond_to?(method_sym) || super
end
set_instance(obj) click to toggle source
# File lib/env_setting.rb, line 70
def self.set_instance(obj)
  raise ArgumentError.new "Object must be a derivative of EnvSetting" unless obj.is_a?(EnvSetting)
  @@instance = obj
end
use(var, *args) click to toggle source
# File lib/env_setting.rb, line 10
def self.use(var, *args)
  var = var.to_s
  description = args.first.is_a?(String) && args.shift
  description ||= ""
  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

  method_name = var.downcase

  instance.define_singleton_method(method_name) do
    cache[method_name] ||= self.class.get_value(var)
  end

  method_name_bool = "#{method_name}?"
  instance.define_singleton_method(method_name_bool) do
    cache[method_name_bool] ||= !!(self.send(method_name))
  end
end
values() click to toggle source
# File lib/env_setting.rb, line 83
def self.values
  keys.map { |k| self[k] }
end
vars() click to toggle source
# File lib/env_setting.rb, line 75
def self.vars
  @@vars ||= {}
end

Public Instance Methods

cache() click to toggle source
# File lib/env_setting.rb, line 98
def cache
  @cache ||= {}
end
clear_cache!() click to toggle source
# File lib/env_setting.rb, line 102
def clear_cache!
  @cache = nil
end
method_missing(method, *args, &block) click to toggle source
# File lib/env_setting.rb, line 110
def method_missing(method, *args, &block)
  ENV.send(method, *args, &block)
end
respond_to?(method_sym) click to toggle source
Calls superclass method
# File lib/env_setting.rb, line 106
def respond_to?(method_sym)
  ENV.respond_to?(method_sym) || super
end