tunable 0.0.2 → 0.0.3
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 +4 -4
- data/README.md +1 -1
- data/Rakefile +1 -7
- data/lib/tunable/model.rb +19 -9
- data/lib/tunable/version.rb +1 -1
- data/spec/spec_helper.rb +6 -4
- data/tunable.gemspec +2 -2
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a8d2bbef77fbf42971cd338f96724a7a7f12fed
|
4
|
+
data.tar.gz: 183a44bcb7404f87d161c62ccf0e2ea8447a8f63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb42447896039571c0bdb446bcf494d1805d79e6b9d28abaf52775a1b72f4185ea95087805ef2ec2a8157498b8fdefb3ce77cdc303f32c5db067c8df0d9f727f
|
7
|
+
data.tar.gz: a54821f4d0bb61710eeba8487c318eda54a661d11f9c148455918dbea0f7e3580eb30f900b0ffcb3e461c17ed96eb2526ebbb1ea511708a124234b6eb1f27d4a
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ Now we can do:
|
|
19
19
|
user.get_setting(:theme, :layout) # => nil
|
20
20
|
user.get_setting(:theme, :color) # => nil
|
21
21
|
|
22
|
-
user.settings = { theme: {
|
22
|
+
user.settings = { theme: { layout: 'wide', color: 'red' } }
|
23
23
|
user.save
|
24
24
|
|
25
25
|
user.get_setting(:theme, :layout) # => 'wide'
|
data/Rakefile
CHANGED
data/lib/tunable/model.rb
CHANGED
@@ -86,14 +86,7 @@ module Tunable
|
|
86
86
|
set_default_setting(:main, field, default) unless default.nil?
|
87
87
|
|
88
88
|
define_method field do
|
89
|
-
|
90
|
-
# the instance var is already normalized to 1/0 when called by the setter
|
91
|
-
Tunable.getter_value(instance_variable_get("@setting_main_#{field}"))
|
92
|
-
else
|
93
|
-
current = main_settings[field.to_sym]
|
94
|
-
default_value = default.is_a?(Proc) ? default.call(self) : default
|
95
|
-
current.nil? ? default_value : current
|
96
|
-
end
|
89
|
+
get_value_for(field)
|
97
90
|
end
|
98
91
|
|
99
92
|
define_method "#{field}?" do
|
@@ -111,10 +104,11 @@ module Tunable
|
|
111
104
|
end
|
112
105
|
|
113
106
|
value = Tunable.normalize_value(raw_value)
|
114
|
-
current = Tunable.normalize_value(
|
107
|
+
current = Tunable.normalize_value(get_value_for(field, false)) # don't fallback to default
|
115
108
|
# debug "Setting #{field} to #{value} (#{value.class}), current: #{current} (#{current.class})"
|
116
109
|
|
117
110
|
if value === current
|
111
|
+
# puts 'Value is same as current'
|
118
112
|
send('changed_attributes').delete(field) # in case we had set if before
|
119
113
|
return
|
120
114
|
end
|
@@ -200,6 +194,22 @@ module Tunable
|
|
200
194
|
|
201
195
|
private
|
202
196
|
|
197
|
+
def get_value_for(field, use_default = true)
|
198
|
+
if instance_variable_defined?("@setting_main_#{field}")
|
199
|
+
# the instance var is already normalized to 1/0 when called by the setter
|
200
|
+
Tunable.getter_value(instance_variable_get("@setting_main_#{field}"))
|
201
|
+
else
|
202
|
+
current = main_settings[field.to_sym]
|
203
|
+
return current if current.present? or !use_default
|
204
|
+
|
205
|
+
if default = self.class.default_settings(:main)[field.to_sym]
|
206
|
+
return default.is_a?(Proc) ? default.call(self) : default
|
207
|
+
end
|
208
|
+
|
209
|
+
nil
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
203
213
|
def modified_settings
|
204
214
|
@modified_settings ||= {}
|
205
215
|
end
|
data/lib/tunable/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
3
4
|
require 'active_record'
|
5
|
+
require 'tunable'
|
4
6
|
|
5
7
|
ActiveRecord::Base.establish_connection(
|
6
|
-
"adapter"
|
8
|
+
"adapter" => "sqlite3",
|
9
|
+
"database" => ':memory:'
|
7
10
|
)
|
8
11
|
|
9
12
|
ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), "debug.log"))
|
10
13
|
|
11
14
|
this_path = File.dirname(__FILE__)
|
12
15
|
load File.join(this_path, '/schema.rb')
|
13
|
-
require File.join(this_path, '..', 'lib', 'tunable.rb')
|
14
16
|
|
15
17
|
class TunableModel < ActiveRecord::Base
|
16
18
|
include Tunable::Model
|
data/tunable.gemspec
CHANGED
@@ -14,8 +14,8 @@ 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.0"
|
18
|
-
s.add_runtime_dependency "activesupport", "~> 4.0"
|
17
|
+
s.add_runtime_dependency "activerecord", "~> 4.0.0"
|
18
|
+
s.add_runtime_dependency "activesupport", "~> 4.0.0"
|
19
19
|
|
20
20
|
s.add_development_dependency "bundler", '~> 1.0', '>= 1.0.0'
|
21
21
|
s.add_development_dependency "rspec", '~> 3.0', '>= 3.0.0'
|
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.3
|
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: 2015-
|
11
|
+
date: 2015-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.0.0
|
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:
|
26
|
+
version: 4.0.0
|
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:
|
33
|
+
version: 4.0.0
|
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:
|
40
|
+
version: 4.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,9 +145,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: 1.3.6
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.4.5
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: Pluggable settings for your AR models.
|
152
152
|
test_files: []
|
153
|
-
has_rdoc:
|