property_sets 0.4.1 → 0.4.2
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.
- data/Gemfile +5 -0
- data/Gemfile.lock +4 -0
- data/VERSION +1 -1
- data/db/.gitignore +1 -0
- data/lib/property_sets/active_record_extension.rb +10 -1
- data/property_sets.gemspec +4 -4
- data/test/database.yml +2 -3
- data/test/test_property_sets.rb +15 -0
- metadata +39 -38
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -14,6 +14,7 @@ GEM
|
|
14
14
|
git (>= 1.2.5)
|
15
15
|
rake
|
16
16
|
linecache (0.43)
|
17
|
+
mocha (0.9.12)
|
17
18
|
rack (1.1.0)
|
18
19
|
rake (0.8.7)
|
19
20
|
ruby-debug (0.10.4)
|
@@ -22,6 +23,7 @@ GEM
|
|
22
23
|
ruby-debug-base (0.10.4)
|
23
24
|
linecache (>= 0.3)
|
24
25
|
shoulda (2.11.3)
|
26
|
+
sqlite3 (1.3.3)
|
25
27
|
|
26
28
|
PLATFORMS
|
27
29
|
ruby
|
@@ -32,5 +34,7 @@ DEPENDENCIES
|
|
32
34
|
activesupport (= 2.3.10)
|
33
35
|
bundler (~> 1.0.0)
|
34
36
|
jeweler (~> 1.5.1)
|
37
|
+
mocha
|
35
38
|
ruby-debug
|
36
39
|
shoulda
|
40
|
+
sqlite3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.2
|
data/db/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
property_sets_test.sqlite
|
@@ -33,7 +33,7 @@ module PropertySets
|
|
33
33
|
|
34
34
|
# Reports the coerced truth value of the property
|
35
35
|
define_method "#{key}?" do
|
36
|
-
|
36
|
+
lookup_or_default(key).true?
|
37
37
|
end
|
38
38
|
|
39
39
|
# Returns the value of the property
|
@@ -70,6 +70,15 @@ module PropertySets
|
|
70
70
|
instance = detect { |property| property.name.to_sym == arg.to_sym }
|
71
71
|
instance ||= @owner.send(association).build(:name => arg.to_s, :value => property_class.default(arg))
|
72
72
|
end
|
73
|
+
|
74
|
+
# This finder method returns the property if present,
|
75
|
+
# otherwise a new instance with the default value.
|
76
|
+
# It does not have the side effect of adding a new setting object.
|
77
|
+
define_method 'lookup_or_default' do |arg|
|
78
|
+
instance = detect { |property| property.name.to_sym == arg.to_sym }
|
79
|
+
instance ||= property_class.new(:value => property_class.default(arg))
|
80
|
+
end
|
81
|
+
|
73
82
|
end
|
74
83
|
end
|
75
84
|
end
|
data/property_sets.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{property_sets}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Morten Primdahl"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-28}
|
13
13
|
s.description = %q{This gem is an ActiveRecord extension which provides a convenient interface for managing per row properties}
|
14
14
|
s.email = %q{morten@zendesk.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
"README.rdoc",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
|
+
"db/.gitignore",
|
27
28
|
"lib/property_sets.rb",
|
28
29
|
"lib/property_sets/action_view_extension.rb",
|
29
30
|
"lib/property_sets/active_record_extension.rb",
|
@@ -40,7 +41,7 @@ Gem::Specification.new do |s|
|
|
40
41
|
]
|
41
42
|
s.homepage = %q{http://github.com/morten/property_sets}
|
42
43
|
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = %q{1.
|
44
|
+
s.rubygems_version = %q{1.6.2}
|
44
45
|
s.summary = %q{Property sets for ActiveRecord}
|
45
46
|
s.test_files = [
|
46
47
|
"test/helper.rb",
|
@@ -50,7 +51,6 @@ Gem::Specification.new do |s|
|
|
50
51
|
]
|
51
52
|
|
52
53
|
if s.respond_to? :specification_version then
|
53
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
54
54
|
s.specification_version = 3
|
55
55
|
|
56
56
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
data/test/database.yml
CHANGED
data/test/test_property_sets.rb
CHANGED
@@ -53,6 +53,21 @@ class TestPropertySets < ActiveSupport::TestCase
|
|
53
53
|
assert_equal 'skep', @account.settings.hep
|
54
54
|
end
|
55
55
|
|
56
|
+
context 'querying for a setting that does not exist' do
|
57
|
+
setup do
|
58
|
+
assert_equal([], @account.settings)
|
59
|
+
assert_equal(true, @account.settings.hep?)
|
60
|
+
end
|
61
|
+
|
62
|
+
should 'not add a new setting' do
|
63
|
+
assert_equal([], @account.settings)
|
64
|
+
end
|
65
|
+
|
66
|
+
should 'give back the default value' do
|
67
|
+
assert_equal('skep', @account.settings.hep)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
56
71
|
should "reject settings with an invalid name" do
|
57
72
|
s = AccountSetting.new(:account => @account)
|
58
73
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: property_sets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 11
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 2
|
10
|
+
version: 0.4.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Morten Primdahl
|
@@ -15,14 +15,12 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-28 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
22
|
type: :runtime
|
24
|
-
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
24
|
none: false
|
27
25
|
requirements:
|
28
26
|
- - "="
|
@@ -33,12 +31,12 @@ dependencies:
|
|
33
31
|
- 3
|
34
32
|
- 10
|
35
33
|
version: 2.3.10
|
36
|
-
|
37
|
-
|
34
|
+
name: activesupport
|
35
|
+
version_requirements: *id001
|
38
36
|
prerelease: false
|
37
|
+
- !ruby/object:Gem::Dependency
|
39
38
|
type: :runtime
|
40
|
-
|
41
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
41
|
requirements:
|
44
42
|
- - "="
|
@@ -49,12 +47,12 @@ dependencies:
|
|
49
47
|
- 3
|
50
48
|
- 10
|
51
49
|
version: 2.3.10
|
52
|
-
|
53
|
-
|
50
|
+
name: activerecord
|
51
|
+
version_requirements: *id002
|
54
52
|
prerelease: false
|
53
|
+
- !ruby/object:Gem::Dependency
|
55
54
|
type: :runtime
|
56
|
-
|
57
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
56
|
none: false
|
59
57
|
requirements:
|
60
58
|
- - "="
|
@@ -65,12 +63,12 @@ dependencies:
|
|
65
63
|
- 3
|
66
64
|
- 10
|
67
65
|
version: 2.3.10
|
68
|
-
|
69
|
-
|
66
|
+
name: actionpack
|
67
|
+
version_requirements: *id003
|
70
68
|
prerelease: false
|
69
|
+
- !ruby/object:Gem::Dependency
|
71
70
|
type: :development
|
72
|
-
|
73
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
72
|
none: false
|
75
73
|
requirements:
|
76
74
|
- - ">="
|
@@ -79,12 +77,12 @@ dependencies:
|
|
79
77
|
segments:
|
80
78
|
- 0
|
81
79
|
version: "0"
|
82
|
-
|
83
|
-
|
80
|
+
name: shoulda
|
81
|
+
version_requirements: *id004
|
84
82
|
prerelease: false
|
83
|
+
- !ruby/object:Gem::Dependency
|
85
84
|
type: :development
|
86
|
-
|
87
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
88
86
|
none: false
|
89
87
|
requirements:
|
90
88
|
- - ~>
|
@@ -95,12 +93,12 @@ dependencies:
|
|
95
93
|
- 0
|
96
94
|
- 0
|
97
95
|
version: 1.0.0
|
98
|
-
|
99
|
-
|
96
|
+
name: bundler
|
97
|
+
version_requirements: *id005
|
100
98
|
prerelease: false
|
99
|
+
- !ruby/object:Gem::Dependency
|
101
100
|
type: :development
|
102
|
-
|
103
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
104
102
|
none: false
|
105
103
|
requirements:
|
106
104
|
- - ~>
|
@@ -111,12 +109,12 @@ dependencies:
|
|
111
109
|
- 5
|
112
110
|
- 1
|
113
111
|
version: 1.5.1
|
114
|
-
|
115
|
-
|
112
|
+
name: jeweler
|
113
|
+
version_requirements: *id006
|
116
114
|
prerelease: false
|
115
|
+
- !ruby/object:Gem::Dependency
|
117
116
|
type: :development
|
118
|
-
|
119
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
117
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
120
118
|
none: false
|
121
119
|
requirements:
|
122
120
|
- - ">="
|
@@ -125,12 +123,12 @@ dependencies:
|
|
125
123
|
segments:
|
126
124
|
- 0
|
127
125
|
version: "0"
|
128
|
-
|
129
|
-
|
126
|
+
name: ruby-debug
|
127
|
+
version_requirements: *id007
|
130
128
|
prerelease: false
|
129
|
+
- !ruby/object:Gem::Dependency
|
131
130
|
type: :development
|
132
|
-
|
133
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
131
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
134
132
|
none: false
|
135
133
|
requirements:
|
136
134
|
- - ">="
|
@@ -139,7 +137,9 @@ dependencies:
|
|
139
137
|
segments:
|
140
138
|
- 0
|
141
139
|
version: "0"
|
142
|
-
|
140
|
+
name: thoughtbot-shoulda
|
141
|
+
version_requirements: *id008
|
142
|
+
prerelease: false
|
143
143
|
description: This gem is an ActiveRecord extension which provides a convenient interface for managing per row properties
|
144
144
|
email: morten@zendesk.com
|
145
145
|
executables: []
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- README.rdoc
|
158
158
|
- Rakefile
|
159
159
|
- VERSION
|
160
|
+
- db/.gitignore
|
160
161
|
- lib/property_sets.rb
|
161
162
|
- lib/property_sets/action_view_extension.rb
|
162
163
|
- lib/property_sets/active_record_extension.rb
|
@@ -200,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
201
|
requirements: []
|
201
202
|
|
202
203
|
rubyforge_project:
|
203
|
-
rubygems_version: 1.
|
204
|
+
rubygems_version: 1.6.2
|
204
205
|
signing_key:
|
205
206
|
specification_version: 3
|
206
207
|
summary: Property sets for ActiveRecord
|