tunable 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +1 -1
- data/README.md +10 -2
- data/Rakefile +7 -1
- data/lib/tunable/model.rb +4 -4
- data/lib/tunable/normalizer.rb +10 -0
- data/lib/tunable/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/tunable/defaults_spec.rb +2 -2
- data/spec/tunable/normalization_spec.rb +4 -7
- data/tunable.gemspec +5 -5
- metadata +15 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f225cd943a46e53efac5f09ab990d51e4fd27e593f682ebeca3b63801ebbf218
|
4
|
+
data.tar.gz: 7f7ada6810840be255a3092d8373edb56009dc39bc3ca272b1bcec7fabdb8731
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a8cbc09565c8b2d0aa675fde53896bc684875bbedab4c49d3c8c4f442c97b7f5249db92492fdc0d91990cede6ab78c61dcaf920f29957adc33443ebae62416e
|
7
|
+
data.tar.gz: e74e60a6d936dac6c23f5aab964011801eab15f01a230c381550a5d9df1bce6a1bd7f4d7bb24717a25022026b79abc581a4d432ec10a76bcb8fb452b515e125d
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
Tunable
|
2
2
|
=======
|
3
3
|
|
4
|
-
A simple gem that provides scoped, pluggable settings for your AR 4+ models.
|
4
|
+
A simple gem that provides scoped, pluggable settings for your AR 4+ models. Lets you keep things simple in your models by moving all customizable settings into a separate table, using a polymorphic Settings model.
|
5
|
+
|
6
|
+
Install
|
7
|
+
-------
|
8
|
+
|
9
|
+
In your Gemfile:
|
10
|
+
|
11
|
+
```
|
12
|
+
gem 'tunable'
|
13
|
+
```
|
5
14
|
|
6
15
|
The code
|
7
16
|
--------
|
@@ -94,7 +103,6 @@ class User < ActiveRecord::Base
|
|
94
103
|
main_settings :layout_type => {
|
95
104
|
:default => lambda { |user| user.is_admin? ? 'advanced' : 'simple' }
|
96
105
|
}
|
97
|
-
|
98
106
|
end
|
99
107
|
```
|
100
108
|
|
data/Rakefile
CHANGED
data/lib/tunable/model.rb
CHANGED
@@ -109,7 +109,7 @@ module Tunable
|
|
109
109
|
|
110
110
|
if value === current
|
111
111
|
# puts 'Value is same as current'
|
112
|
-
|
112
|
+
@changed_attributes.delete(field) # in case we had set if before
|
113
113
|
return
|
114
114
|
end
|
115
115
|
|
@@ -180,14 +180,14 @@ module Tunable
|
|
180
180
|
|
181
181
|
def queue_setting_for_update(context, key, val)
|
182
182
|
if self.class.main_settings_list.include?(key.to_sym)
|
183
|
-
|
183
|
+
@changed_attributes[key.to_sym] = val if changed_attributes.include?(key.to_sym)
|
184
184
|
end
|
185
185
|
(modified_settings[context.to_sym] ||= {})[key.to_sym] = val
|
186
186
|
end
|
187
187
|
|
188
188
|
def queue_setting_for_deletion(context, key)
|
189
189
|
if self.class.main_settings_list.include?(key)
|
190
|
-
|
190
|
+
@changed_attributes[key.to_sym] = nil if changed_attributes.include?(key.to_sym)
|
191
191
|
end
|
192
192
|
(deleted_settings[context.to_sym] ||= []) << key.to_sym
|
193
193
|
end
|
@@ -201,7 +201,7 @@ module Tunable
|
|
201
201
|
else
|
202
202
|
current = main_settings[field.to_sym]
|
203
203
|
return current if current.present? or !use_default
|
204
|
-
|
204
|
+
|
205
205
|
if default = self.class.default_settings(:main)[field.to_sym]
|
206
206
|
return default.is_a?(Proc) ? default.call(self) : default
|
207
207
|
end
|
data/lib/tunable/normalizer.rb
CHANGED
@@ -8,6 +8,7 @@ module Tunable
|
|
8
8
|
def normalize_value(val)
|
9
9
|
return 1 if TRUTHIES.include?(val.to_s)
|
10
10
|
return 0 if FALSIES.include?(val.to_s)
|
11
|
+
return Integer(val) if is_integer?(val)
|
11
12
|
return if val.blank? # false.blank? returns true so this needs to go after the 0 line
|
12
13
|
val
|
13
14
|
end
|
@@ -29,6 +30,15 @@ module Tunable
|
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
33
|
+
private
|
34
|
+
|
35
|
+
def is_integer?(val)
|
36
|
+
Integer(val)
|
37
|
+
true
|
38
|
+
rescue
|
39
|
+
false
|
40
|
+
end
|
41
|
+
|
32
42
|
end
|
33
43
|
|
34
44
|
end
|
data/lib/tunable/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -100,7 +100,7 @@ describe 'defaults' do
|
|
100
100
|
|
101
101
|
TEST_SETTINGS.each do |key, val|
|
102
102
|
it "#{key} equals new val" do
|
103
|
-
@foo.main_settings[key].should
|
103
|
+
@foo.main_settings[key].should === @new_settings[key]
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
@@ -110,7 +110,7 @@ describe 'defaults' do
|
|
110
110
|
|
111
111
|
TEST_SETTINGS.each do |key, val|
|
112
112
|
it "#{key} equals new val" do
|
113
|
-
@foo.get_main_setting(key).should
|
113
|
+
@foo.get_main_setting(key).should === @new_settings[key]
|
114
114
|
end
|
115
115
|
end
|
116
116
|
end
|
@@ -18,7 +18,7 @@ describe 'normalization' do
|
|
18
18
|
:numbers => {
|
19
19
|
:number_0 => '0',
|
20
20
|
:number_1 => '1',
|
21
|
-
:number_of_the_beast =>
|
21
|
+
:number_of_the_beast => 666
|
22
22
|
},
|
23
23
|
:onoffs => {
|
24
24
|
:on => 'on',
|
@@ -57,7 +57,7 @@ describe 'normalization' do
|
|
57
57
|
sql = "select `value` from `settings` where `settable_id` = #{id} and `context` = '#{context}' and `key` = '#{key}';"
|
58
58
|
res = ActiveRecord::Base.connection.execute(sql)
|
59
59
|
# puts res.inspect
|
60
|
-
res[0]['value']
|
60
|
+
res[0] ? res[0]['value'] : nil
|
61
61
|
end
|
62
62
|
|
63
63
|
describe 'creating a new setting directly' do
|
@@ -188,10 +188,7 @@ describe 'normalization' do
|
|
188
188
|
describe 'using settings relationship' do
|
189
189
|
|
190
190
|
before :all do
|
191
|
-
|
192
|
-
@model.update_attributes({
|
193
|
-
:settings => VALUE_TYPES
|
194
|
-
})
|
191
|
+
@model.update_attributes(:settings => VALUE_TYPES)
|
195
192
|
end
|
196
193
|
|
197
194
|
after :all do
|
@@ -292,7 +289,7 @@ describe 'normalization' do
|
|
292
289
|
end
|
293
290
|
|
294
291
|
it 'keeps 666 as 666' do
|
295
|
-
get_value_from_model(:numbers, :number_of_the_beast).should ==
|
292
|
+
get_value_from_model(:numbers, :number_of_the_beast).should == 666
|
296
293
|
end
|
297
294
|
|
298
295
|
it 'keeps foo as foo' do
|
data/tunable.gemspec
CHANGED
@@ -14,12 +14,12 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
# s.rubyforge_project = "tunable"
|
16
16
|
|
17
|
-
s.add_runtime_dependency "activerecord", "~> 4.
|
18
|
-
s.add_runtime_dependency "activesupport", "~> 4.
|
17
|
+
s.add_runtime_dependency "activerecord", "~> 4.2.x"
|
18
|
+
s.add_runtime_dependency "activesupport", "~> 4.2.x"
|
19
19
|
|
20
|
-
s.add_development_dependency "bundler"
|
21
|
-
s.add_development_dependency "rspec"
|
22
|
-
s.add_development_dependency "sqlite3", '
|
20
|
+
s.add_development_dependency "bundler" #, '~> 1.0', '>= 1.0.0'
|
21
|
+
s.add_development_dependency "rspec" #, '~> 3.0', '>= 3.0.0'
|
22
|
+
s.add_development_dependency "sqlite3", '< 1.4.x'
|
23
23
|
|
24
24
|
s.files = `git ls-files`.split("\n")
|
25
25
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tunable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomás Pollak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,88 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.
|
19
|
+
version: 4.2.x
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.
|
26
|
+
version: 4.2.x
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 4.
|
33
|
+
version: 4.2.x
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 4.
|
40
|
+
version: 4.2.x
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.0'
|
48
45
|
- - ">="
|
49
46
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
47
|
+
version: '0'
|
51
48
|
type: :development
|
52
49
|
prerelease: false
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
54
51
|
requirements:
|
55
|
-
- - "~>"
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '1.0'
|
58
52
|
- - ">="
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
54
|
+
version: '0'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: rspec
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '3.0'
|
68
59
|
- - ">="
|
69
60
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
61
|
+
version: '0'
|
71
62
|
type: :development
|
72
63
|
prerelease: false
|
73
64
|
version_requirements: !ruby/object:Gem::Requirement
|
74
65
|
requirements:
|
75
|
-
- - "~>"
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '3.0'
|
78
66
|
- - ">="
|
79
67
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
68
|
+
version: '0'
|
81
69
|
- !ruby/object:Gem::Dependency
|
82
70
|
name: sqlite3
|
83
71
|
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
85
|
-
- - "
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '1.0'
|
88
|
-
- - ">="
|
73
|
+
- - "<"
|
89
74
|
- !ruby/object:Gem::Version
|
90
|
-
version: 1.
|
75
|
+
version: 1.4.x
|
91
76
|
type: :development
|
92
77
|
prerelease: false
|
93
78
|
version_requirements: !ruby/object:Gem::Requirement
|
94
79
|
requirements:
|
95
|
-
- - "
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '1.0'
|
98
|
-
- - ">="
|
80
|
+
- - "<"
|
99
81
|
- !ruby/object:Gem::Version
|
100
|
-
version: 1.
|
82
|
+
version: 1.4.x
|
101
83
|
description: Pluggable settings for your AR models.
|
102
84
|
email:
|
103
85
|
- tomas@forkhq.com
|
@@ -145,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
127
|
version: 1.3.6
|
146
128
|
requirements: []
|
147
129
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.7.3
|
149
131
|
signing_key:
|
150
132
|
specification_version: 4
|
151
133
|
summary: Pluggable settings for your AR models.
|