Class: CleanSettings::Setting
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- CleanSettings::Setting
show all
- Defined in:
- lib/clean_settings/setting.rb
Defined Under Namespace
Classes: Defaults, SettingNotFound
Constant Summary
collapse
- @@defaults =
Defaults.new
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.[](var_name) ⇒ Object
44
45
46
47
48
49
50
51
52
|
# File 'lib/clean_settings/setting.rb', line 44
def [](var_name)
if var = object(var_name)
var.value
elsif @@defaults.send(var_name.to_sym)
@@defaults.send(var_name.to_sym)
else
nil
end
end
|
.[]=(var_name, value) ⇒ Object
54
55
56
57
58
59
60
61
62
|
# File 'lib/clean_settings/setting.rb', line 54
def []=(var_name, value)
var_name = var_name.to_s
record = object(var_name) || with_owner.new(var: var_name)
record.value = value
record.save!
value
end
|
.clear_defaults ⇒ Object
40
41
42
|
# File 'lib/clean_settings/setting.rb', line 40
def clear_defaults
@@defaults = Defaults.new
end
|
.defaults ⇒ Object
27
28
29
|
# File 'lib/clean_settings/setting.rb', line 27
def defaults
@@defaults ||= Defaults.new
end
|
.defaults=(key, value) ⇒ Object
36
37
38
|
# File 'lib/clean_settings/setting.rb', line 36
def defaults=(key, value)
@@defaults.send("#{key}=", value)
end
|
.destroy(var_name) ⇒ Object
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/clean_settings/setting.rb', line 64
def destroy(var_name)
var_name = var_name.to_s
if obj = object(var_name)
obj.destroy
true
else
raise SettingNotFound, "Setting variable \"#{var_name}\" not found"
end
end
|
.fetch ⇒ Object
Also known as:
all_settings
84
85
86
|
# File 'lib/clean_settings/setting.rb', line 84
def fetch
fetch_defaults.merge(fetch_globals)
end
|
.fetch_defaults ⇒ Object
Also known as:
all_defaults
31
32
33
|
# File 'lib/clean_settings/setting.rb', line 31
def fetch_defaults
@@defaults.marshal_dump.with_indifferent_access
end
|
.fetch_globals ⇒ Object
Also known as:
all_globals
75
76
77
78
79
80
81
|
# File 'lib/clean_settings/setting.rb', line 75
def fetch_globals
vars = with_owner.select([:var, :value])
result = {}
vars.each { |record| result[record.var] = record.value }
result.with_indifferent_access
end
|
.for_thing(owner) ⇒ Object
90
91
92
93
|
# File 'lib/clean_settings/setting.rb', line 90
def for_thing(owner)
@owner = owner
self
end
|
.method_missing(method, *args, &block) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/clean_settings/setting.rb', line 103
def method_missing(method, *args, &block)
method_name = method.to_s
super(method, *args, &block)
rescue NoMethodError
if method_name[-1] == "="
var_name = method_name.chop
value = args[0]
self[var_name] = value
else
self[method_name]
end
end
|
.object(var_name) ⇒ Object
99
100
101
|
# File 'lib/clean_settings/setting.rb', line 99
def object(var_name)
with_owner.where(var: var_name).first
end
|
.with_owner ⇒ Object
95
96
97
|
# File 'lib/clean_settings/setting.rb', line 95
def with_owner
unscoped.where("owner_type is NULL and owner_id is NULL")
end
|
Instance Method Details
#value ⇒ Object
18
19
20
|
# File 'lib/clean_settings/setting.rb', line 18
def value
YAML::load(self[:value])
end
|
#value=(new_value) ⇒ Object
22
23
24
|
# File 'lib/clean_settings/setting.rb', line 22
def value=(new_value)
self[:value] = new_value.to_yaml
end
|