thingtank 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +5 -5
- data/VERSION +1 -1
- data/lib/thingtank/character.rb +5 -1
- data/test/test_thingtank.rb +18 -0
- metadata +29 -29
data/README.md
CHANGED
@@ -287,8 +287,8 @@ Hints:
|
|
287
287
|
-----------------------------------------------
|
288
288
|
|
289
289
|
The main idea is that every couch document could have many characters at the same time.
|
290
|
-
The implementation is that the document is an object of
|
291
|
-
Most of the time you don't want to define properties for the
|
290
|
+
The implementation is that the document is an object of _ThingTank_ or a subclass of it. _ThingTank_ is compatible to _couchrest\_model_ with some helper methods.
|
291
|
+
Most of the time you don't want to define properties for the _ThingTank_ class or a subclass. You may store any _key => value_ freely within the document by
|
292
292
|
using the [] and []= methods.
|
293
293
|
|
294
294
|
The concept is inspired by the way the go language defines interfaces. With _ThingTank_ you may thing of the main doc as a _Hash_. Then the characters are
|
@@ -298,8 +298,8 @@ statement with or without affecting the properties the character cares about. Bu
|
|
298
298
|
properties that the character cares about via the character. A doc might combine different characters at the same time. There might be even different characters that
|
299
299
|
care about the same properties. If so you should take care that there are no conflicting actions taking place at the same update.
|
300
300
|
|
301
|
-
The characters are all subclasses of the
|
302
|
-
directly but only via their document (instance of
|
301
|
+
The characters are all subclasses of the _ThingTank::Character_ class and are compatible with couchrest\_model as well but they won't interact with the database
|
302
|
+
directly but only via their document (instance of _ThingTank_). The characters is where all validation, callbacks, properties and additional methods should go into.
|
303
303
|
They do all the hard work, but they aren't loaded automatically but only if you call them via the _ThingTank#as_ method. Then the properties that they care about
|
304
304
|
are copied from the doc to the character instance. When you interact with the character object its properties go out of sync with the original doc so here are some hints
|
305
305
|
how to handle this dirty state and how to get them back to the doc.
|
@@ -317,7 +317,7 @@ Characters may also interact via the doc, but care has to be taken in order to s
|
|
317
317
|
* Views are stored and called via the _ThingTank_ class
|
318
318
|
* Pass _ThingTank#add\_character_ as second parameter the name of the property if you want the doc to have a property that has a certain character
|
319
319
|
* Use _ThingTank#with_ to use the character of a certain property
|
320
|
-
* Use the _doc method
|
320
|
+
* Use the _doc method within a character method to access the doc and _doc.id for the id
|
321
321
|
* Look at the examples and tests
|
322
322
|
|
323
323
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.3
|
data/lib/thingtank/character.rb
CHANGED
@@ -34,7 +34,11 @@ class ThingTank
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def character_properties
|
37
|
-
|
37
|
+
if superclass.respond_to? :character_properties
|
38
|
+
(superclass.character_properties || []).concat(@character_properties || [])
|
39
|
+
else
|
40
|
+
@character_properties
|
41
|
+
end
|
38
42
|
end
|
39
43
|
|
40
44
|
def -(key)
|
data/test/test_thingtank.rb
CHANGED
@@ -32,12 +32,30 @@ class Car < ThingTank::Character
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
class CarSub < Car
|
36
|
+
property :additional
|
37
|
+
end
|
38
|
+
|
35
39
|
describe "a general test" do
|
36
40
|
|
37
41
|
before do
|
38
42
|
reset_test_db!
|
39
43
|
end
|
40
44
|
|
45
|
+
it "should inherit the properties" do
|
46
|
+
doc = create
|
47
|
+
doc.add_character CarSub do |c|
|
48
|
+
c.color = 'green'
|
49
|
+
c.additional = 'Spoiler'
|
50
|
+
end
|
51
|
+
doc.save
|
52
|
+
doc.reload
|
53
|
+
assert_equal ["color", "model"], Car.character_properties.sort
|
54
|
+
assert_equal ["additional", "color", "model"], CarSub.character_properties.sort
|
55
|
+
assert_equal false, doc.as(CarSub).valid?
|
56
|
+
assert_equal 'green', doc.as(CarSub).color
|
57
|
+
end
|
58
|
+
|
41
59
|
it "should add a character if set by is but not if just asked if it could be a character" do
|
42
60
|
doc1 = create
|
43
61
|
doc1.is(DrivingLicense)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thingtank
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-28 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &11805880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11805880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: couchrest
|
27
|
-
requirement: &
|
27
|
+
requirement: &11804860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11804860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: couchrest_model
|
38
|
-
requirement: &
|
38
|
+
requirement: &11777420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *11777420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: defined
|
49
|
-
requirement: &
|
49
|
+
requirement: &11776640 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *11776640
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard
|
60
|
-
requirement: &
|
60
|
+
requirement: &11775540 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *11775540
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: libnotify
|
71
|
-
requirement: &
|
71
|
+
requirement: &11773820 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *11773820
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rb-inotify
|
82
|
-
requirement: &
|
82
|
+
requirement: &11770240 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *11770240
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: guard-minitest
|
93
|
-
requirement: &
|
93
|
+
requirement: &11744560 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *11744560
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: linecache19
|
104
|
-
requirement: &
|
104
|
+
requirement: &11743740 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *11743740
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: ruby-debug19
|
115
|
-
requirement: &
|
115
|
+
requirement: &11743100 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *11743100
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: yard
|
126
|
-
requirement: &
|
126
|
+
requirement: &11742460 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 0.6.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *11742460
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: bundler
|
137
|
-
requirement: &
|
137
|
+
requirement: &11741460 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: 1.0.0
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *11741460
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: jeweler
|
148
|
-
requirement: &
|
148
|
+
requirement: &11740740 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,7 +153,7 @@ dependencies:
|
|
153
153
|
version: 1.6.4
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *11740740
|
157
157
|
description:
|
158
158
|
email: ! 'Base64.decode64(bGludXhAbWFyY3JlbmVhcm5zLmRl
|
159
159
|
|
@@ -215,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
215
215
|
version: '0'
|
216
216
|
segments:
|
217
217
|
- 0
|
218
|
-
hash:
|
218
|
+
hash: 3630717306101485163
|
219
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
220
|
none: false
|
221
221
|
requirements:
|