property_sets 0.5.4 → 0.5.5
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 +3 -3
- data/Gemfile.lock +8 -8
- data/VERSION +1 -1
- data/lib/property_sets/active_record_extension.rb +33 -23
- data/property_sets.gemspec +12 -12
- data/test/test_property_sets.rb +28 -0
- metadata +22 -22
data/Gemfile
CHANGED
@@ -2,9 +2,9 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
|
5
|
-
gem "activesupport", "~> 2.3.
|
6
|
-
gem "activerecord", "~> 2.3.
|
7
|
-
gem "actionpack", "~> 2.3.
|
5
|
+
gem "activesupport", "~> 2.3.14"
|
6
|
+
gem "activerecord", "~> 2.3.14"
|
7
|
+
gem "actionpack", "~> 2.3.14"
|
8
8
|
|
9
9
|
# Add dependencies to develop your gem here.
|
10
10
|
# Include everything needed to run rake, tests, features, etc.
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
actionpack (2.3.
|
5
|
-
activesupport (= 2.3.
|
4
|
+
actionpack (2.3.14)
|
5
|
+
activesupport (= 2.3.14)
|
6
6
|
rack (~> 1.1.0)
|
7
|
-
activerecord (2.3.
|
8
|
-
activesupport (= 2.3.
|
9
|
-
activesupport (2.3.
|
7
|
+
activerecord (2.3.14)
|
8
|
+
activesupport (= 2.3.14)
|
9
|
+
activesupport (2.3.14)
|
10
10
|
columnize (0.3.2)
|
11
11
|
git (1.2.5)
|
12
12
|
jeweler (1.5.2)
|
@@ -29,9 +29,9 @@ PLATFORMS
|
|
29
29
|
ruby
|
30
30
|
|
31
31
|
DEPENDENCIES
|
32
|
-
actionpack (~> 2.3.
|
33
|
-
activerecord (~> 2.3.
|
34
|
-
activesupport (~> 2.3.
|
32
|
+
actionpack (~> 2.3.14)
|
33
|
+
activerecord (~> 2.3.14)
|
34
|
+
activesupport (~> 2.3.14)
|
35
35
|
bundler (~> 1.0.0)
|
36
36
|
jeweler (~> 1.5.1)
|
37
37
|
mocha
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.5
|
@@ -40,6 +40,8 @@ module PropertySets
|
|
40
40
|
value.to_f
|
41
41
|
when :integer
|
42
42
|
value.to_i
|
43
|
+
when :boolean
|
44
|
+
![ "false", "0", "", "off", "n" ].member?(value.to_s.downcase)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
@@ -79,36 +81,44 @@ module PropertySets
|
|
79
81
|
define_method "#{key}_record" do
|
80
82
|
lookup(key)
|
81
83
|
end
|
84
|
+
end
|
82
85
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
+
def protected?(arg)
|
87
|
+
lookup(arg).protected?
|
88
|
+
end
|
86
89
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
+
def enable(arg)
|
91
|
+
send("#{arg}=", "1")
|
92
|
+
end
|
90
93
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
+
def disable(arg)
|
95
|
+
send("#{arg}=", "0")
|
96
|
+
end
|
94
97
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
instance ||= build(:name => arg.to_s, :value => property_class.default(arg))
|
98
|
+
def build_default(arg)
|
99
|
+
build(:name => arg.to_s, :value => default(arg))
|
100
|
+
end
|
99
101
|
|
100
|
-
|
102
|
+
def lookup_without_default(arg)
|
103
|
+
detect { |property| property.name.to_sym == arg.to_sym }
|
104
|
+
end
|
101
105
|
|
102
|
-
|
103
|
-
|
106
|
+
# The finder method which returns the property if present, otherwise a new instance with defaults
|
107
|
+
def lookup(arg)
|
108
|
+
instance = lookup_without_default(arg)
|
109
|
+
instance ||= build_default(arg)
|
104
110
|
|
105
|
-
#
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
111
|
+
instance.send("#{owner_class_sym}=", @owner) if @owner.new_record?
|
112
|
+
|
113
|
+
instance
|
114
|
+
end
|
115
|
+
|
116
|
+
# This finder method returns the property if present,
|
117
|
+
# otherwise a new instance with the default value.
|
118
|
+
# It does not have the side effect of adding a new setting object.
|
119
|
+
def lookup_or_default(arg)
|
120
|
+
instance = detect { |property| property.name.to_sym == arg.to_sym }
|
121
|
+
instance ||= new(:value => default(arg))
|
112
122
|
end
|
113
123
|
end
|
114
124
|
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.5.
|
8
|
+
s.version = "0.5.5"
|
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-
|
12
|
+
s.date = %q{2011-11-29}
|
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 = [
|
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
]
|
42
42
|
s.homepage = %q{http://github.com/morten/property_sets}
|
43
43
|
s.require_paths = ["lib"]
|
44
|
-
s.rubygems_version = %q{1.
|
44
|
+
s.rubygems_version = %q{1.5.3}
|
45
45
|
s.summary = %q{Property sets for ActiveRecord}
|
46
46
|
s.test_files = [
|
47
47
|
"test/helper.rb",
|
@@ -54,18 +54,18 @@ Gem::Specification.new do |s|
|
|
54
54
|
s.specification_version = 3
|
55
55
|
|
56
56
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
|
-
s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.
|
58
|
-
s.add_runtime_dependency(%q<activerecord>, ["~> 2.3.
|
59
|
-
s.add_runtime_dependency(%q<actionpack>, ["~> 2.3.
|
57
|
+
s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.14"])
|
58
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 2.3.14"])
|
59
|
+
s.add_runtime_dependency(%q<actionpack>, ["~> 2.3.14"])
|
60
60
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
61
61
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
62
62
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
|
63
63
|
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
64
64
|
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
65
65
|
else
|
66
|
-
s.add_dependency(%q<activesupport>, ["~> 2.3.
|
67
|
-
s.add_dependency(%q<activerecord>, ["~> 2.3.
|
68
|
-
s.add_dependency(%q<actionpack>, ["~> 2.3.
|
66
|
+
s.add_dependency(%q<activesupport>, ["~> 2.3.14"])
|
67
|
+
s.add_dependency(%q<activerecord>, ["~> 2.3.14"])
|
68
|
+
s.add_dependency(%q<actionpack>, ["~> 2.3.14"])
|
69
69
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
70
70
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
71
71
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
@@ -73,9 +73,9 @@ Gem::Specification.new do |s|
|
|
73
73
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
74
74
|
end
|
75
75
|
else
|
76
|
-
s.add_dependency(%q<activesupport>, ["~> 2.3.
|
77
|
-
s.add_dependency(%q<activerecord>, ["~> 2.3.
|
78
|
-
s.add_dependency(%q<actionpack>, ["~> 2.3.
|
76
|
+
s.add_dependency(%q<activesupport>, ["~> 2.3.14"])
|
77
|
+
s.add_dependency(%q<activerecord>, ["~> 2.3.14"])
|
78
|
+
s.add_dependency(%q<actionpack>, ["~> 2.3.14"])
|
79
79
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
80
80
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
81
81
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
data/test/test_property_sets.rb
CHANGED
@@ -208,6 +208,34 @@ class TestPropertySets < ActiveSupport::TestCase
|
|
208
208
|
end
|
209
209
|
end
|
210
210
|
|
211
|
+
context "lookup" do
|
212
|
+
context "with data" do
|
213
|
+
setup { @account.texts.foo = "1" }
|
214
|
+
|
215
|
+
should "return the data" do
|
216
|
+
assert_equal "1", @account.texts.lookup(:foo).value
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
context "without data" do
|
221
|
+
should "create a new record, returning the default" do
|
222
|
+
assert_equal nil, @account.texts.lookup(:foo).value
|
223
|
+
assert @account.texts.detect { |p| p.name == "foo" }
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
context "lookup_without_default" do
|
229
|
+
should "return the row if it exists" do
|
230
|
+
@account.texts.foo = "1"
|
231
|
+
assert_equal "1", @account.texts.lookup_without_default(:foo).value
|
232
|
+
end
|
233
|
+
|
234
|
+
should "return nil otherwise" do
|
235
|
+
assert_equal nil, @account.texts.lookup_without_default(:foo)
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
211
239
|
context "typed columns" do
|
212
240
|
context "string data" do
|
213
241
|
should "be writable and readable" do
|
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:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 5
|
10
|
+
version: 0.5.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Morten Primdahl
|
@@ -15,60 +15,59 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-29 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: activesupport
|
23
|
-
prerelease: false
|
24
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
25
|
requirements:
|
27
26
|
- - ~>
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
28
|
+
hash: 31
|
30
29
|
segments:
|
31
30
|
- 2
|
32
31
|
- 3
|
33
|
-
-
|
34
|
-
version: 2.3.
|
32
|
+
- 14
|
33
|
+
version: 2.3.14
|
34
|
+
prerelease: false
|
35
35
|
type: :runtime
|
36
36
|
requirement: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: activerecord
|
39
|
-
prerelease: false
|
40
39
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
42
|
- - ~>
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
44
|
+
hash: 31
|
46
45
|
segments:
|
47
46
|
- 2
|
48
47
|
- 3
|
49
|
-
-
|
50
|
-
version: 2.3.
|
48
|
+
- 14
|
49
|
+
version: 2.3.14
|
50
|
+
prerelease: false
|
51
51
|
type: :runtime
|
52
52
|
requirement: *id002
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: actionpack
|
55
|
-
prerelease: false
|
56
55
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
57
56
|
none: false
|
58
57
|
requirements:
|
59
58
|
- - ~>
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
hash:
|
60
|
+
hash: 31
|
62
61
|
segments:
|
63
62
|
- 2
|
64
63
|
- 3
|
65
|
-
-
|
66
|
-
version: 2.3.
|
64
|
+
- 14
|
65
|
+
version: 2.3.14
|
66
|
+
prerelease: false
|
67
67
|
type: :runtime
|
68
68
|
requirement: *id003
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: shoulda
|
71
|
-
prerelease: false
|
72
71
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
@@ -78,11 +77,11 @@ dependencies:
|
|
78
77
|
segments:
|
79
78
|
- 0
|
80
79
|
version: "0"
|
80
|
+
prerelease: false
|
81
81
|
type: :development
|
82
82
|
requirement: *id004
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
|
-
prerelease: false
|
86
85
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
87
86
|
none: false
|
88
87
|
requirements:
|
@@ -94,11 +93,11 @@ dependencies:
|
|
94
93
|
- 0
|
95
94
|
- 0
|
96
95
|
version: 1.0.0
|
96
|
+
prerelease: false
|
97
97
|
type: :development
|
98
98
|
requirement: *id005
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: jeweler
|
101
|
-
prerelease: false
|
102
101
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
103
102
|
none: false
|
104
103
|
requirements:
|
@@ -110,11 +109,11 @@ dependencies:
|
|
110
109
|
- 5
|
111
110
|
- 1
|
112
111
|
version: 1.5.1
|
112
|
+
prerelease: false
|
113
113
|
type: :development
|
114
114
|
requirement: *id006
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: ruby-debug
|
117
|
-
prerelease: false
|
118
117
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
119
118
|
none: false
|
120
119
|
requirements:
|
@@ -124,11 +123,11 @@ dependencies:
|
|
124
123
|
segments:
|
125
124
|
- 0
|
126
125
|
version: "0"
|
126
|
+
prerelease: false
|
127
127
|
type: :development
|
128
128
|
requirement: *id007
|
129
129
|
- !ruby/object:Gem::Dependency
|
130
130
|
name: thoughtbot-shoulda
|
131
|
-
prerelease: false
|
132
131
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
133
132
|
none: false
|
134
133
|
requirements:
|
@@ -138,6 +137,7 @@ dependencies:
|
|
138
137
|
segments:
|
139
138
|
- 0
|
140
139
|
version: "0"
|
140
|
+
prerelease: false
|
141
141
|
type: :development
|
142
142
|
requirement: *id008
|
143
143
|
description: This gem is an ActiveRecord extension which provides a convenient interface for managing per row properties
|
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
201
|
requirements: []
|
202
202
|
|
203
203
|
rubyforge_project:
|
204
|
-
rubygems_version: 1.
|
204
|
+
rubygems_version: 1.5.3
|
205
205
|
signing_key:
|
206
206
|
specification_version: 3
|
207
207
|
summary: Property sets for ActiveRecord
|