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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2a8d2bbef77fbf42971cd338f96724a7a7f12fed
4
- data.tar.gz: 183a44bcb7404f87d161c62ccf0e2ea8447a8f63
2
+ SHA256:
3
+ metadata.gz: f225cd943a46e53efac5f09ab990d51e4fd27e593f682ebeca3b63801ebbf218
4
+ data.tar.gz: 7f7ada6810840be255a3092d8373edb56009dc39bc3ca272b1bcec7fabdb8731
5
5
  SHA512:
6
- metadata.gz: cb42447896039571c0bdb446bcf494d1805d79e6b9d28abaf52775a1b72f4185ea95087805ef2ec2a8157498b8fdefb3ce77cdc303f32c5db067c8df0d9f727f
7
- data.tar.gz: a54821f4d0bb61710eeba8487c318eda54a661d11f9c148455918dbea0f7e3580eb30f900b0ffcb3e461c17ed96eb2526ebbb1ea511708a124234b6eb1f27d4a
6
+ metadata.gz: 9a8cbc09565c8b2d0aa675fde53896bc684875bbedab4c49d3c8c4f442c97b7f5249db92492fdc0d91990cede6ab78c61dcaf920f29957adc33443ebae62416e
7
+ data.tar.gz: e74e60a6d936dac6c23f5aab964011801eab15f01a230c381550a5d9df1bce6a1bd7f4d7bb24717a25022026b79abc581a4d432ec10a76bcb8fb452b515e125d
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source :rubygems
2
2
 
3
- # specified in tuktuk.gemspec
3
+ # specified in gemspec
4
4
  gemspec
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. Let's you keep things simple in your models by moving all customizable settings into a separate table, using a polymorphic Settings model.
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
@@ -1,2 +1,8 @@
1
1
  require 'bundler'
2
- Bundler::GemHelper.install_tasks
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ begin
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ rescue LoadError
8
+ end
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
- send('changed_attributes').delete(field) # in case we had set if before
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
- send('changed_attributes')[key.to_sym] = val
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
- send('changed_attributes')[key.to_sym] = nil
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Tunable
2
2
 
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
 
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,7 @@ require 'active_record'
5
5
  require 'tunable'
6
6
 
7
7
  ActiveRecord::Base.establish_connection(
8
- "adapter" => "sqlite3",
8
+ "adapter" => "sqlite3",
9
9
  "database" => ':memory:'
10
10
  )
11
11
 
@@ -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 == @new_settings[key]
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 == @new_settings[key]
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 => '666'
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 == '666'
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.0.0"
18
- s.add_runtime_dependency "activesupport", "~> 4.0.0"
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", '~> 1.0', '>= 1.0.0'
21
- s.add_development_dependency "rspec", '~> 3.0', '>= 3.0.0'
22
- s.add_development_dependency "sqlite3", '~> 1.0', '>= 1.0.0'
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.3
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: 2015-09-02 00:00:00.000000000 Z
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.0.0
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.0.0
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.0.0
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.0.0
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: 1.0.0
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: 1.0.0
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: 3.0.0
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: 3.0.0
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.0.0
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.0.0
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.4.5
130
+ rubygems_version: 2.7.3
149
131
  signing_key:
150
132
  specification_version: 4
151
133
  summary: Pluggable settings for your AR models.