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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 429e9db65fc91c748fc526ef2b8b3a8241490e39
4
- data.tar.gz: 21c3c99469bebdd04cfcf5e9d383a15878eb2520
3
+ metadata.gz: 2a8d2bbef77fbf42971cd338f96724a7a7f12fed
4
+ data.tar.gz: 183a44bcb7404f87d161c62ccf0e2ea8447a8f63
5
5
  SHA512:
6
- metadata.gz: b12ebe2c3d3670c3d9eb3de9511d0e5e068d90806c315c1011ca91c74fe9579bdca681102dde7f1aa47ed298dde33064fc56fb2f14393f14b1921bb849cc7bbb
7
- data.tar.gz: 44e64b53736a25c6c754dccb8f6a842ee3182c0aeaf2400ecc9fd5b860ae834fe920d22ea209840206c7ddb2515d1bd9e476cb2457fcd12edf053ab4c46991cf
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: { format: 'wide', color: 'red' } }
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
@@ -1,8 +1,2 @@
1
1
  require 'bundler'
2
- Bundler::GemHelper.install_tasks
3
-
4
- require 'spec/rake/spectask'
5
-
6
- Spec::Rake::SpecTask.new do |t|
7
- t.spec_files = FileList["spec/**/*_spec.rb"]
8
- end
2
+ Bundler::GemHelper.install_tasks
@@ -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
- if instance_variable_defined?("@setting_main_#{field}")
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(send("#{field}"))
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
@@ -1,5 +1,5 @@
1
1
  module Tunable
2
2
 
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
 
5
5
  end
@@ -1,16 +1,18 @@
1
- require 'rubygems'
2
- require 'active_support'
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" => "sqlite3", "database" => ':memory:'
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
@@ -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.2
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-05-01 00:00:00.000000000 Z
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: '4.0'
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: '4.0'
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: '4.0'
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: '4.0'
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.2.0
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: