tunable 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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: