rails-settings-cached 0.7.2 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -0
- data/README.md +336 -166
- data/Rakefile +30 -0
- data/lib/generators/settings/install_generator.rb +12 -6
- data/lib/generators/settings/templates/migration.rb +1 -3
- data/lib/generators/settings/templates/model.rb +8 -3
- data/lib/rails-settings/base.rb +184 -23
- data/lib/rails-settings/railtie.rb +3 -2
- data/lib/rails-settings/request_cache.rb +30 -0
- data/lib/rails-settings/version.rb +3 -1
- data/lib/rails-settings-cached.rb +3 -4
- metadata +40 -31
- data/lib/generators/settings/templates/app.yml +0 -13
- data/lib/rails-settings/default.rb +0 -40
- data/lib/rails-settings/extend.rb +0 -34
- data/lib/rails-settings/scoped_settings.rb +0 -12
- data/lib/rails-settings/settings.rb +0 -120
@@ -1,120 +0,0 @@
|
|
1
|
-
module RailsSettings
|
2
|
-
class Settings < ActiveRecord::Base
|
3
|
-
self.table_name = table_name_prefix + "settings"
|
4
|
-
|
5
|
-
class SettingNotFound < RuntimeError; end
|
6
|
-
|
7
|
-
belongs_to :thing, polymorphic: true
|
8
|
-
|
9
|
-
# get the value field, YAML decoded
|
10
|
-
def value
|
11
|
-
YAML.load(self[:value]) if self[:value].present?
|
12
|
-
end
|
13
|
-
|
14
|
-
# set the value field, YAML encoded
|
15
|
-
def value=(new_value)
|
16
|
-
self[:value] = new_value.to_yaml
|
17
|
-
end
|
18
|
-
|
19
|
-
class << self
|
20
|
-
# get or set a variable with the variable as the called method
|
21
|
-
# rubocop:disable Style/MethodMissing
|
22
|
-
def method_missing(method, *args)
|
23
|
-
method_name = method.to_s
|
24
|
-
super(method, *args)
|
25
|
-
rescue NoMethodError
|
26
|
-
# set a value for a variable
|
27
|
-
if method_name[-1] == "="
|
28
|
-
var_name = method_name.sub("=", "")
|
29
|
-
value = args.first
|
30
|
-
self[var_name] = value
|
31
|
-
else
|
32
|
-
# retrieve a value
|
33
|
-
self[method_name]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# destroy the specified settings record
|
38
|
-
def destroy(var_name)
|
39
|
-
var_name = var_name.to_s
|
40
|
-
obj = object(var_name)
|
41
|
-
raise SettingNotFound, "Setting variable \"#{var_name}\" not found" if obj.nil?
|
42
|
-
|
43
|
-
obj.destroy
|
44
|
-
true
|
45
|
-
end
|
46
|
-
|
47
|
-
# retrieve all settings as a hash (optionally starting with a given namespace)
|
48
|
-
def get_all(starting_with = nil)
|
49
|
-
vars = thing_scoped.select("var, value")
|
50
|
-
vars = vars.where("var LIKE '#{starting_with}%'") if starting_with
|
51
|
-
result = {}
|
52
|
-
vars.each { |record| result[record.var] = record.value }
|
53
|
-
result.reverse_merge!(default_settings(starting_with))
|
54
|
-
result.with_indifferent_access
|
55
|
-
end
|
56
|
-
|
57
|
-
def where(sql = nil)
|
58
|
-
vars = thing_scoped.where(sql) if sql
|
59
|
-
vars
|
60
|
-
end
|
61
|
-
|
62
|
-
# get a setting value by [] notation
|
63
|
-
def [](var_name)
|
64
|
-
return Default[var_name] unless rails_initialized?
|
65
|
-
|
66
|
-
val = object(var_name)
|
67
|
-
return val.value if val
|
68
|
-
return Default[var_name] if Default.enabled?
|
69
|
-
end
|
70
|
-
|
71
|
-
# set a setting value by [] notation
|
72
|
-
def []=(var_name, value)
|
73
|
-
var_name = var_name.to_s
|
74
|
-
|
75
|
-
record = object(var_name) || thing_scoped.new(var: var_name)
|
76
|
-
record.value = value
|
77
|
-
record.save!
|
78
|
-
|
79
|
-
value
|
80
|
-
end
|
81
|
-
|
82
|
-
def merge!(var_name, hash_value)
|
83
|
-
raise ArgumentError unless hash_value.is_a?(Hash)
|
84
|
-
|
85
|
-
old_value = self[var_name] || {}
|
86
|
-
raise TypeError, "Existing value is not a hash, can't merge!" unless old_value.is_a?(Hash)
|
87
|
-
|
88
|
-
new_value = old_value.merge(hash_value)
|
89
|
-
self[var_name] = new_value if new_value != old_value
|
90
|
-
|
91
|
-
new_value
|
92
|
-
end
|
93
|
-
|
94
|
-
def object(var_name)
|
95
|
-
return nil unless table_exists?
|
96
|
-
thing_scoped.where(var: var_name.to_s).first
|
97
|
-
end
|
98
|
-
|
99
|
-
def thing_scoped
|
100
|
-
unscoped.where("thing_type is NULL and thing_id is NULL")
|
101
|
-
end
|
102
|
-
|
103
|
-
def source(filename)
|
104
|
-
Default.source(filename)
|
105
|
-
end
|
106
|
-
|
107
|
-
def rails_initialized?
|
108
|
-
Rails.application && Rails.application.initialized?
|
109
|
-
end
|
110
|
-
|
111
|
-
private
|
112
|
-
|
113
|
-
def default_settings(starting_with = nil)
|
114
|
-
return {} unless Default.enabled?
|
115
|
-
return Default.instance if starting_with.nil?
|
116
|
-
Default.instance.select { |key, _| key.to_s.start_with?(starting_with) }
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|