Class: Settings
Constant Summary
PersistentSettings::VERSION
Class Method Summary
collapse
Class Method Details
.assignation?(method_name) ⇒ Boolean
30
31
32
|
# File 'lib/settings.rb', line 30
def self.assignation?(method_name)
method_name.to_s.match(/=$/)
end
|
.define_setter_and_getter(method_name) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/settings.rb', line 15
def self.define_setter_and_getter(method_name)
getter = method_name.to_s.chop
(class << self; self; end).instance_eval do
define_method method_name do |value|
persist(getter, value)
instance_variable_set(:"@#{getter}", value)
end
define_method getter do
instance_variable_get(:"@#{getter}")
end
end
end
|
.keys ⇒ Object
53
54
55
|
# File 'lib/settings.rb', line 53
def self.keys
Settings.select(:var).collect { |s| s.var.to_sym }
end
|
.load_from_persistance ⇒ Object
49
50
51
|
# File 'lib/settings.rb', line 49
def self.load_from_persistance
load_from_persistance! if connected? && table_exists?
end
|
.load_from_persistance! ⇒ Object
43
44
45
46
47
|
# File 'lib/settings.rb', line 43
def self.load_from_persistance!
self.all.each do |setting|
self.send("#{setting.var}=", setting.value)
end
end
|
.method_missing(method_name, *args) ⇒ Object
6
7
8
9
10
11
12
13
|
# File 'lib/settings.rb', line 6
def self.method_missing(method_name, *args)
if assignation?(method_name)
self.define_setter_and_getter(method_name)
self.send(method_name, args.first)
else
super
end
end
|
.persist(getter, value) ⇒ Object
34
35
36
37
38
39
40
41
|
# File 'lib/settings.rb', line 34
def self.persist(getter, value)
setting = Settings.where(:var => getter).last
if setting
setting.update_attribute(:value, value)
else
Settings.create(:var => getter, :value => value)
end
end
|