Class: NiftySettings::Settings
- Inherits:
-
Object
- Object
- NiftySettings::Settings
show all
- Defined in:
- lib/nifty_settings/settings.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(hash = {}) ⇒ Settings
Returns a new instance of Settings.
7
8
9
10
|
# 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
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
56
57
58
59
60
61
62
63
64
|
# 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
|
Class Method Details
.default ⇒ Object
97
98
99
|
# File 'lib/nifty_settings/settings.rb', line 97
def default
@@default ||= self.new(self.load)
end
|
.env ⇒ Object
120
121
122
|
# File 'lib/nifty_settings/settings.rb', line 120
def env
@env ||= defined?(Rails) ? Rails.env : ENV['RACK_ENV']
end
|
.load ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# 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) ⇒ Object
108
109
110
|
# File 'lib/nifty_settings/settings.rb', line 108
def method_missing(name, *args, &block)
default.send(name, *args, &block)
end
|
.reset! ⇒ Object
101
102
103
104
105
106
|
# File 'lib/nifty_settings/settings.rb', line 101
def reset!
@@default = nil
default
true
end
|
.respond_to?(name, include_all = false) ⇒ Boolean
112
113
114
|
# File 'lib/nifty_settings/settings.rb', line 112
def respond_to?(name, include_all = false)
true
end
|
.root ⇒ Object
116
117
118
|
# File 'lib/nifty_settings/settings.rb', line 116
def root
@root ||= defined?(Rails) ? Rails.root : Pathname.new(File.expand_path('.'))
end
|
Instance Method Details
#==(other) ⇒ Object
12
13
14
|
# File 'lib/nifty_settings/settings.rb', line 12
def ==(other)
self.to_s == other.to_s
end
|
#[](k) ⇒ Object
39
40
41
|
# File 'lib/nifty_settings/settings.rb', line 39
def [](k)
@hash[k.to_sym]
end
|
#[]=(k, v) ⇒ Object
35
36
37
|
# File 'lib/nifty_settings/settings.rb', line 35
def []=(k, v)
@hash[k.to_sym] = normalize_attr(v)
end
|
#empty? ⇒ Boolean
Also known as:
nil?
51
52
53
|
# File 'lib/nifty_settings/settings.rb', line 51
def empty?
@hash.empty?
end
|
#fetch(key, default = nil) ⇒ Object
47
48
49
|
# File 'lib/nifty_settings/settings.rb', line 47
def fetch(key, default = nil)
has?(key) ? self[key] : default
end
|
#has?(key) ⇒ Boolean
43
44
45
|
# File 'lib/nifty_settings/settings.rb', line 43
def has?(key)
@hash.has_key?(key.to_sym)
end
|
#respond_to?(name, include_all = false) ⇒ Boolean
66
67
68
|
# File 'lib/nifty_settings/settings.rb', line 66
def respond_to?(name, include_all = false)
true
end
|
#to_ary ⇒ Object
Also known as:
to_a
21
22
23
|
# File 'lib/nifty_settings/settings.rb', line 21
def to_ary
self.to_hash.values
end
|
#to_hash ⇒ Object
Also known as:
to_h
16
17
18
|
# File 'lib/nifty_settings/settings.rb', line 16
def to_hash
unpack_attr @hash
end
|
#to_str ⇒ Object
Also known as:
to_s
26
27
28
29
30
31
32
|
# File 'lib/nifty_settings/settings.rb', line 26
def to_str
if self.nil?
nil
else
self.to_hash
end.to_s
end
|