class NiftySettings::Settings
Public Class Methods
default()
click to toggle source
# File lib/nifty_settings/settings.rb, line 97 def default @@default ||= self.new(self.load) end
env()
click to toggle source
# File lib/nifty_settings/settings.rb, line 120 def env @env ||= defined?(Rails) ? Rails.env : ENV['RACK_ENV'] end
load()
click to toggle source
# File lib/nifty_settings/settings.rb, line 71 def load files = [] settings_file = NiftySettings.configuration.settings_file || self.root.join('config', 'settings.yml') if File.file?(settings_file) files << settings_file end settings_dir = NiftySettings.configuration.settings_dir || self.root.join('config', 'settings') if File.directory?(settings_dir) files.concat Dir[File.join(settings_dir, '*.yml')] end return {} if files.empty? files.inject({}) do |hash, file| contents = File.read(file) contents = ERB.new(contents).result contents = YAML.load(contents) || {} if env contents = (contents['default'] || {}).deep_merge(contents[env] || {}) end hash.deep_merge contents end end
method_missing(name, *args, &block)
click to toggle source
# File lib/nifty_settings/settings.rb, line 108 def method_missing(name, *args, &block) default.send(name, *args, &block) end
new(hash = {})
click to toggle source
# File lib/nifty_settings/settings.rb, line 7 def initialize(hash = {}) @hash = Hash.new { |h, k| h[k] = self.class.new } hash.each_pair { |k, v| self[k] = v } end
reset!()
click to toggle source
# File lib/nifty_settings/settings.rb, line 101 def reset! @@default = nil default # Force us to reload the settings # If a setup block is defined, call it post configuration. true end
respond_to?(name, include_all = false)
click to toggle source
# File lib/nifty_settings/settings.rb, line 112 def respond_to?(name, include_all = false) true end
root()
click to toggle source
# File lib/nifty_settings/settings.rb, line 116 def root @root ||= defined?(Rails) ? Rails.root : Pathname.new(File.expand_path('.')) end
Public Instance Methods
==(other)
click to toggle source
# File lib/nifty_settings/settings.rb, line 12 def ==(other) self.to_s == other.to_s end
[](k)
click to toggle source
# File lib/nifty_settings/settings.rb, line 39 def [](k) @hash[k.to_sym] end
[]=(k, v)
click to toggle source
# File lib/nifty_settings/settings.rb, line 35 def []=(k, v) @hash[k.to_sym] = normalize_attr(v) end
empty?()
click to toggle source
# File lib/nifty_settings/settings.rb, line 51 def empty? @hash.empty? end
Also aliased as: nil?
fetch(key, default = nil)
click to toggle source
# File lib/nifty_settings/settings.rb, line 47 def fetch(key, default = nil) has?(key) ? self[key] : default end
has?(key)
click to toggle source
# File lib/nifty_settings/settings.rb, line 43 def has?(key) @hash.has_key?(key.to_sym) end
method_missing(name, *args, &block)
click to toggle source
# File lib/nifty_settings/settings.rb, line 56 def method_missing(name, *args, &block) name = name.to_s key, modifier = name[0..-2], name[-1, 1] case when modifier == '=' then self.send(:[]=, key, *args) when self.has?(name) then self[name] when modifier == '?' then self.has?(key) end end
respond_to?(name, include_all = false)
click to toggle source
# File lib/nifty_settings/settings.rb, line 66 def respond_to?(name, include_all = false) true end
to_ary()
click to toggle source
# File lib/nifty_settings/settings.rb, line 21 def to_ary self.to_hash.values end
Also aliased as: to_a
to_hash()
click to toggle source
# File lib/nifty_settings/settings.rb, line 16 def to_hash unpack_attr @hash end
Also aliased as: to_h
to_str()
click to toggle source
# File lib/nifty_settings/settings.rb, line 26 def to_str if self.nil? nil else self.to_hash end.to_s end
Also aliased as: to_s
Private Instance Methods
normalize_attr(value)
click to toggle source
# File lib/nifty_settings/settings.rb, line 127 def normalize_attr(value) case value when Hash self.class.new(value) when Array value.map { |v| normalize_attr(v) } else value end end
unpack_attr(value)
click to toggle source
# File lib/nifty_settings/settings.rb, line 138 def unpack_attr(value) case value when self.class value.to_hash when Hash Hash.new.tap do |h| value.each_pair { |k, v| h[k] = unpack_attr(v) } end when Array value.map { |v| unpack_attr(v) } else value end end