tunable 0.0.5 → 0.0.7

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
  SHA256:
3
- metadata.gz: 18948658c5465d7de3637533a887367622d7c1067d60cc67cb4a340936144fa7
4
- data.tar.gz: 9caad8b2f1e03f15c862e4ae44b5f07f423ab21f2fbde7be9c0bf3ce2ceafa8c
3
+ metadata.gz: 17046a0d75a1878088af83018d2ec30961dd0ddc0e07eeb692a443b3c93785ed
4
+ data.tar.gz: 3bccc8448310b98a5db13f9e5231236d1e211e537d680dbe8d081baf383430ba
5
5
  SHA512:
6
- metadata.gz: 1843588f136e89158718d78765dfede4be12a7748ecb6e2572c8e349b0b847209ab7f8b2e7239529eab4fc1885e0c3ee37b96f437f866d8230930efc1216dc38
7
- data.tar.gz: 204320680e9719bcb102c25c166bb20c1df168b98fc788b2476e9106e0f81c352c01a4ad656747d811ac5b4a5d6b8207ab2cb8cd86f4e606f00ef711381dd82e
6
+ metadata.gz: d0b26b12263cedeaf93fbac85be0443faa4e933945de7cabd7453c2f76f91de2a537e6d6a01f63d8931983c236b8d4d5276731f9eb161555455abf46202f57ff
7
+ data.tar.gz: b987b703ba9930bca04279aaeaec1b6b8afe4a531b51185baf3cd4201b52087e4f9ec0230e8fd0a44eed545629d7b4bc3651bca52063c95d2a515b1cb57ce324
data/lib/tunable/model.rb CHANGED
@@ -57,6 +57,17 @@ module Tunable
57
57
  default = opts
58
58
  end
59
59
 
60
+ getter = "#{name}_#{field}"
61
+
62
+ define_method getter do
63
+ get_setting(name, field)
64
+ end
65
+
66
+ define_method "#{getter}=" do |value|
67
+ # self.settings = { name => { field => val } }
68
+ set_setting(name, field, value)
69
+ end
70
+
60
71
  set_default_setting(name, field, default) unless default.nil?
61
72
  end
62
73
  end
@@ -109,7 +120,7 @@ module Tunable
109
120
 
110
121
  if value === current
111
122
  # puts 'Value is same as current'
112
- @changed_attributes.delete(field) # in case we had set if before
123
+ changed_attributes.delete(field) # in case we had set if before
113
124
  return
114
125
  end
115
126
 
@@ -189,14 +200,14 @@ module Tunable
189
200
 
190
201
  def queue_setting_for_update(context, key, val)
191
202
  if self.class.main_settings_list.include?(key.to_sym)
192
- @changed_attributes[key.to_sym] = val if changed_attributes.include?(key.to_sym)
203
+ changed_attributes[key.to_sym] = val if changed_attributes.include?(key.to_sym)
193
204
  end
194
205
  (modified_settings[context.to_sym] ||= {})[key.to_sym] = val
195
206
  end
196
207
 
197
208
  def queue_setting_for_deletion(context, key)
198
209
  if self.class.main_settings_list.include?(key)
199
- @changed_attributes[key.to_sym] = nil if changed_attributes.include?(key.to_sym)
210
+ changed_attributes[key.to_sym] = nil if changed_attributes.include?(key.to_sym)
200
211
  end
201
212
  (deleted_settings[context.to_sym] ||= []) << key.to_sym
202
213
  end
@@ -228,12 +239,12 @@ module Tunable
228
239
  end
229
240
 
230
241
  def delete_setting(context, key)
231
- Tunable::Setting.delete_all(
232
- :context => context.to_s,
233
- :key => key.to_s,
234
- :settable_type => self.class.model_name.to_s,
235
- :settable_id => self.id
236
- )
242
+ Tunable::Setting.where(
243
+ context: context.to_s,
244
+ key: key.to_s,
245
+ settable_type: self.class.model_name.to_s,
246
+ settable_id: self.id
247
+ ).delete_all
237
248
  end
238
249
 
239
250
  def save_new_settings
@@ -1,5 +1,3 @@
1
1
  module Tunable
2
-
3
- VERSION = '0.0.5'
4
-
2
+ VERSION = '0.0.7'
5
3
  end
@@ -93,7 +93,7 @@ describe 'defaults' do
93
93
  }
94
94
 
95
95
  @foo = TunableModel.new
96
- @foo.update_attributes(@new_settings)
96
+ @foo.update(@new_settings)
97
97
  end
98
98
 
99
99
  describe 'settings_hash' do
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe 'basic setters' do
4
+
5
+ before :all do
6
+ TunableModel.has_settings \
7
+ :website => {
8
+ super_mode: { default: false }
9
+ }
10
+
11
+ @model = TunableModel.create(name: "Yay, I'm settable!")
12
+ end
13
+
14
+
15
+ it 'has getters setters scoped by context' do
16
+ expect(@model.respond_to?(:website_super_mode)).to eq(true)
17
+ expect(@model.respond_to?(:website_super_mode=)).to eq(true)
18
+
19
+ expect(@model.website_super_mode).to eq(false)
20
+ expect(@model.website_super_mode = true).to eq(true)
21
+ expect(@model.website_super_mode).to eq(false)
22
+ @model.save
23
+ expect(@model.website_super_mode).to eq(true)
24
+ end
25
+
26
+ end
@@ -188,7 +188,7 @@ describe 'normalization' do
188
188
  describe 'using settings relationship' do
189
189
 
190
190
  before :all do
191
- @model.update_attributes(:settings => VALUE_TYPES)
191
+ @model.update(:settings => VALUE_TYPES)
192
192
  end
193
193
 
194
194
  after :all 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.2.x"
18
- s.add_runtime_dependency "activesupport", "~> 4.2.x"
17
+ s.add_runtime_dependency "activerecord" #, "~> 4.2.x"
18
+ s.add_runtime_dependency "activesupport" #, "~> 4.2.x"
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'
22
- s.add_development_dependency "sqlite3", '< 1.4.x'
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,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
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: 2022-05-30 00:00:00.000000000 Z
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.x
19
+ version: '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.2.x
26
+ version: '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.2.x
33
+ version: '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.2.x
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "<"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 1.4.x
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "<"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 1.4.x
82
+ version: '0'
83
83
  description: Pluggable settings for your AR models.
84
84
  email:
85
85
  - tomas@forkhq.com
@@ -104,6 +104,7 @@ files:
104
104
  - spec/schema.rb
105
105
  - spec/spec_helper.rb
106
106
  - spec/tunable/defaults_spec.rb
107
+ - spec/tunable/getters_spec.rb
107
108
  - spec/tunable/normalization_spec.rb
108
109
  - spec/tunable/querying_spec.rb
109
110
  - spec/tunable/setters_spec.rb
@@ -126,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
127
  - !ruby/object:Gem::Version
127
128
  version: 1.3.6
128
129
  requirements: []
129
- rubyforge_project:
130
- rubygems_version: 2.7.3
130
+ rubygems_version: 3.4.6
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: Pluggable settings for your AR models.