class Configurative::Settings

Public Class Methods

[](key) click to toggle source
# File lib/configurative/settings.rb, line 40
def self.[](key)
  instance_for(self)[key]
end
[]=(key, value) click to toggle source
# File lib/configurative/settings.rb, line 44
def self.[]=(key, value)
  instance_for(self)[key] = value
end
empty?() click to toggle source
# File lib/configurative/settings.rb, line 56
def self.empty?
  instance_for(self).empty?
end
environment(setting) click to toggle source
# File lib/configurative/settings.rb, line 98
def self.environment(setting)
  options_for(self)[:environment] = setting
end
fetch(key, alternative=nil) click to toggle source
# File lib/configurative/settings.rb, line 48
def self.fetch(key, alternative=nil)
  self[key] || alternative
end
files(*files) click to toggle source
# File lib/configurative/settings.rb, line 90
def self.files(*files)
  options_for(self)[:files] = files
end
include?(key) click to toggle source
# File lib/configurative/settings.rb, line 52
def self.include?(key)
  instance_for(self).include?(key)
end
instance() click to toggle source
# File lib/configurative/settings.rb, line 16
def self.instance
  instance_for(self)
end
load(*files) click to toggle source
# File lib/configurative/settings.rb, line 110
def self.load(*files)
  settings = nil
  path     = find_file(*files)
  if path
    begin
      settings          = SettingsLoader.new(options).load!(path)
      @@instances[self] = settings
    rescue => error
      # Deliberately ignored.
    end
  end
  settings
end
load!(*files) click to toggle source
# File lib/configurative/settings.rb, line 124
def self.load!(*files)
  settings = load(*files)
  raise ConfigurationError, "Unable to locate an accessible configuration file." if settings.nil?
  settings
end
method_missing(method_name, *arguments, &block) click to toggle source
Calls superclass method
# File lib/configurative/settings.rb, line 77
def self.method_missing(method_name, *arguments, &block)
  data = instance_for(self)
  if method_name[-1,1] == "="
    data[property_name(method_name)] = arguments.first
  else
    if data.include?(method_name)
      data[method_name]
    else
      super
    end
  end
end
namespace(setting) click to toggle source
# File lib/configurative/settings.rb, line 102
def self.namespace(setting)
  environment(setting)
end
new(options={}) click to toggle source
# File lib/configurative/settings.rb, line 11
def initialize(options={})
  @settings = nil
  self.class.options_for(self.class).merge!(options)
end
reset(full=false) click to toggle source
# File lib/configurative/settings.rb, line 68
def self.reset(full=false)
  @@instances = {}
  @@options.delete(self) if full
end
respond_to?(method_name, include_private=false) click to toggle source
Calls superclass method
# File lib/configurative/settings.rb, line 73
def self.respond_to?(method_name, include_private=false)
  instance_for(self).include?(property_name(method_name)) || super
end
section(setting) click to toggle source
# File lib/configurative/settings.rb, line 106
def self.section(setting)
  options_for(self)[:section] = setting
end
sources(*files) click to toggle source
# File lib/configurative/settings.rb, line 94
def self.sources(*files)
  files(*files)
end

Private Class Methods

find_file(*paths) click to toggle source
# File lib/configurative/settings.rb, line 140
def self.find_file(*paths)
  paths.find {|entry| File.exist?(entry) && File.file?(entry) && File.readable?(entry)}
end
instance_for(klass, defaults={}) click to toggle source
# File lib/configurative/settings.rb, line 144
def self.instance_for(klass, defaults={})
  if !@@instances.include?(klass)
    files             = options[:files] || []
    settings          = load(*files)
    parser            = SettingsParser.new(options_for(klass))
    @@instances[klass] = settings.nil? ? parser.parse(defaults) : settings
  end
  @@instances[klass]
end
options() click to toggle source
# File lib/configurative/settings.rb, line 136
def self.options
  options_for(self)
end
options_for(klass) click to toggle source
# File lib/configurative/settings.rb, line 154
def self.options_for(klass)
  if !@@options.include?(klass)
    @@options[klass] = {environment: (ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"),
                        section:     nil}
  end
  @@options[klass]
end
property_name(name) click to toggle source
# File lib/configurative/settings.rb, line 162
def self.property_name(name)
  (name.to_s[-1, 1] == "=" ? name.to_s[0...-1] : name.to_s).to_sym
end

Public Instance Methods

[](key) click to toggle source
# File lib/configurative/settings.rb, line 20
def [](key)
  self.class[key]
end
[]=(key, value) click to toggle source
# File lib/configurative/settings.rb, line 24
def []=(key, value)
  self.class[key] = value
end
empty?() click to toggle source
# File lib/configurative/settings.rb, line 36
def empty?
  self.class.empty?
end
fetch(key, alternative=nil) click to toggle source
# File lib/configurative/settings.rb, line 28
def fetch(key, alternative=nil)
  self.class.fetch(key, alternative)
end
include?(key) click to toggle source
# File lib/configurative/settings.rb, line 32
def include?(key)
  self.class.include?(key)
end
method_missing(method_name, *arguments, &block) click to toggle source
Calls superclass method
# File lib/configurative/settings.rb, line 64
def method_missing(method_name, *arguments, &block)
  self.class.method_missing(method_name, *arguments, &block) || super
end
respond_to?(method_name, include_private=false) click to toggle source
Calls superclass method
# File lib/configurative/settings.rb, line 60
def respond_to?(method_name, include_private=false)
  self.class.instance_for?(self.class).include?(property_name(method_name)) || super
end

Private Instance Methods

options() click to toggle source
# File lib/configurative/settings.rb, line 132
def options
  self.class.options
end