perpetuity 0.2 → 0.3
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/CHANGELOG.md +16 -0
- data/LICENSE +7 -0
- data/README.md +50 -8
- data/lib/perpetuity/attribute.rb +5 -1
- data/lib/perpetuity/attribute_set.rb +1 -1
- data/lib/perpetuity/mapper.rb +53 -71
- data/lib/perpetuity/mapper_registry.rb +17 -0
- data/lib/perpetuity/mongodb/index.rb +48 -0
- data/lib/perpetuity/mongodb/query_expression.rb +11 -0
- data/lib/perpetuity/mongodb/query_intersection.rb +16 -0
- data/lib/perpetuity/mongodb/query_union.rb +16 -0
- data/lib/perpetuity/mongodb.rb +44 -7
- data/lib/perpetuity/serializer.rb +75 -0
- data/lib/perpetuity/version.rb +1 -1
- data/lib/perpetuity.rb +2 -2
- data/perpetuity.gemspec +2 -3
- data/spec/perpetuity/mapper_registry_spec.rb +15 -0
- data/spec/perpetuity/mapper_spec.rb +17 -11
- data/spec/perpetuity/mongodb/index_spec.rb +44 -0
- data/spec/perpetuity/mongodb/query_expression_spec.rb +18 -0
- data/spec/perpetuity/mongodb/query_intersection_spec.rb +16 -0
- data/spec/perpetuity/mongodb/query_union_spec.rb +16 -0
- data/spec/perpetuity/mongodb_spec.rb +28 -1
- data/spec/perpetuity/serializer_spec.rb +6 -0
- data/spec/perpetuity_spec.rb +138 -59
- data/spec/test_classes.rb +26 -17
- metadata +22 -23
- data/.rspec +0 -1
- data/Guardfile +0 -24
data/spec/test_classes.rb
CHANGED
@@ -6,7 +6,7 @@ class User
|
|
6
6
|
end
|
7
7
|
|
8
8
|
Perpetuity.generate_mapper_for User do
|
9
|
-
attribute :name
|
9
|
+
attribute :name
|
10
10
|
end
|
11
11
|
|
12
12
|
class Article
|
@@ -21,13 +21,22 @@ class Article
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
Perpetuity
|
25
|
-
|
26
|
-
attribute :
|
27
|
-
attribute :
|
28
|
-
attribute :
|
29
|
-
attribute :
|
30
|
-
attribute :
|
24
|
+
class ArticleMapper < Perpetuity::Mapper
|
25
|
+
map Article
|
26
|
+
attribute :title
|
27
|
+
attribute :body
|
28
|
+
attribute :author
|
29
|
+
attribute :comments
|
30
|
+
attribute :published_at
|
31
|
+
attribute :views
|
32
|
+
|
33
|
+
def published
|
34
|
+
select { (published_at.not_equal? nil) & (published_at < Time.now) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def unpublished
|
38
|
+
select { (published_at == nil) | (published_at > Time.now) }
|
39
|
+
end
|
31
40
|
end
|
32
41
|
|
33
42
|
class Comment
|
@@ -39,8 +48,8 @@ class Comment
|
|
39
48
|
end
|
40
49
|
|
41
50
|
Perpetuity.generate_mapper_for(Comment) do
|
42
|
-
attribute :body
|
43
|
-
attribute :author
|
51
|
+
attribute :body
|
52
|
+
attribute :author
|
44
53
|
end
|
45
54
|
|
46
55
|
class Book
|
@@ -52,7 +61,7 @@ end
|
|
52
61
|
|
53
62
|
Perpetuity.generate_mapper_for Book do
|
54
63
|
id { title.gsub(/\W+/, '-').downcase }
|
55
|
-
attribute :title
|
64
|
+
attribute :title
|
56
65
|
end
|
57
66
|
|
58
67
|
class Message
|
@@ -70,7 +79,7 @@ class Message
|
|
70
79
|
end
|
71
80
|
|
72
81
|
Perpetuity.generate_mapper_for Message do
|
73
|
-
attribute :text
|
82
|
+
attribute :text
|
74
83
|
end
|
75
84
|
|
76
85
|
class Topic
|
@@ -78,8 +87,8 @@ class Topic
|
|
78
87
|
end
|
79
88
|
|
80
89
|
Perpetuity.generate_mapper_for(Topic) do
|
81
|
-
attribute :title
|
82
|
-
attribute :creator
|
90
|
+
attribute :title
|
91
|
+
attribute :creator
|
83
92
|
end
|
84
93
|
|
85
94
|
class Car
|
@@ -87,9 +96,9 @@ class Car
|
|
87
96
|
end
|
88
97
|
|
89
98
|
Perpetuity.generate_mapper_for(Car) do
|
90
|
-
attribute :make
|
91
|
-
attribute :model
|
92
|
-
attribute :seats
|
99
|
+
attribute :make
|
100
|
+
attribute :model
|
101
|
+
attribute :seats
|
93
102
|
|
94
103
|
validate do
|
95
104
|
present :make
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perpetuity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -43,22 +43,6 @@ dependencies:
|
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: 2.8.0
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: guard-rspec
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
46
|
- !ruby/object:Gem::Dependency
|
63
47
|
name: mongo
|
64
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +50,7 @@ dependencies:
|
|
66
50
|
requirements:
|
67
51
|
- - ! '>='
|
68
52
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
53
|
+
version: 1.8.0
|
70
54
|
type: :runtime
|
71
55
|
prerelease: false
|
72
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +58,7 @@ dependencies:
|
|
74
58
|
requirements:
|
75
59
|
- - ! '>='
|
76
60
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
61
|
+
version: 1.8.0
|
78
62
|
- !ruby/object:Gem::Dependency
|
79
63
|
name: bson_ext
|
80
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,7 +75,7 @@ dependencies:
|
|
91
75
|
- - ! '>='
|
92
76
|
- !ruby/object:Gem::Version
|
93
77
|
version: '0'
|
94
|
-
description: Persistence layer Ruby objects
|
78
|
+
description: Persistence layer for Ruby objects
|
95
79
|
email:
|
96
80
|
- jgaskins@gmail.com
|
97
81
|
executables: []
|
@@ -99,11 +83,11 @@ extensions: []
|
|
99
83
|
extra_rdoc_files: []
|
100
84
|
files:
|
101
85
|
- .gitignore
|
102
|
-
- .rspec
|
103
86
|
- .rvmrc
|
104
87
|
- .travis.yml
|
88
|
+
- CHANGELOG.md
|
105
89
|
- Gemfile
|
106
|
-
-
|
90
|
+
- LICENSE
|
107
91
|
- README.md
|
108
92
|
- Rakefile
|
109
93
|
- lib/perpetuity.rb
|
@@ -112,12 +96,17 @@ files:
|
|
112
96
|
- lib/perpetuity/config.rb
|
113
97
|
- lib/perpetuity/data_injectable.rb
|
114
98
|
- lib/perpetuity/mapper.rb
|
99
|
+
- lib/perpetuity/mapper_registry.rb
|
115
100
|
- lib/perpetuity/mongodb.rb
|
101
|
+
- lib/perpetuity/mongodb/index.rb
|
116
102
|
- lib/perpetuity/mongodb/query.rb
|
117
103
|
- lib/perpetuity/mongodb/query_attribute.rb
|
118
104
|
- lib/perpetuity/mongodb/query_expression.rb
|
105
|
+
- lib/perpetuity/mongodb/query_intersection.rb
|
106
|
+
- lib/perpetuity/mongodb/query_union.rb
|
119
107
|
- lib/perpetuity/reference.rb
|
120
108
|
- lib/perpetuity/retrieval.rb
|
109
|
+
- lib/perpetuity/serializer.rb
|
121
110
|
- lib/perpetuity/validations.rb
|
122
111
|
- lib/perpetuity/validations/length.rb
|
123
112
|
- lib/perpetuity/validations/presence.rb
|
@@ -128,13 +117,18 @@ files:
|
|
128
117
|
- spec/perpetuity/attribute_spec.rb
|
129
118
|
- spec/perpetuity/config_spec.rb
|
130
119
|
- spec/perpetuity/data_injectable_spec.rb
|
120
|
+
- spec/perpetuity/mapper_registry_spec.rb
|
131
121
|
- spec/perpetuity/mapper_spec.rb
|
122
|
+
- spec/perpetuity/mongodb/index_spec.rb
|
132
123
|
- spec/perpetuity/mongodb/query_attribute_spec.rb
|
133
124
|
- spec/perpetuity/mongodb/query_expression_spec.rb
|
125
|
+
- spec/perpetuity/mongodb/query_intersection_spec.rb
|
134
126
|
- spec/perpetuity/mongodb/query_spec.rb
|
127
|
+
- spec/perpetuity/mongodb/query_union_spec.rb
|
135
128
|
- spec/perpetuity/mongodb_spec.rb
|
136
129
|
- spec/perpetuity/reference_spec.rb
|
137
130
|
- spec/perpetuity/retrieval_spec.rb
|
131
|
+
- spec/perpetuity/serializer_spec.rb
|
138
132
|
- spec/perpetuity/validations/length_spec.rb
|
139
133
|
- spec/perpetuity/validations/presence_spec.rb
|
140
134
|
- spec/perpetuity/validations_spec.rb
|
@@ -169,13 +163,18 @@ test_files:
|
|
169
163
|
- spec/perpetuity/attribute_spec.rb
|
170
164
|
- spec/perpetuity/config_spec.rb
|
171
165
|
- spec/perpetuity/data_injectable_spec.rb
|
166
|
+
- spec/perpetuity/mapper_registry_spec.rb
|
172
167
|
- spec/perpetuity/mapper_spec.rb
|
168
|
+
- spec/perpetuity/mongodb/index_spec.rb
|
173
169
|
- spec/perpetuity/mongodb/query_attribute_spec.rb
|
174
170
|
- spec/perpetuity/mongodb/query_expression_spec.rb
|
171
|
+
- spec/perpetuity/mongodb/query_intersection_spec.rb
|
175
172
|
- spec/perpetuity/mongodb/query_spec.rb
|
173
|
+
- spec/perpetuity/mongodb/query_union_spec.rb
|
176
174
|
- spec/perpetuity/mongodb_spec.rb
|
177
175
|
- spec/perpetuity/reference_spec.rb
|
178
176
|
- spec/perpetuity/retrieval_spec.rb
|
177
|
+
- spec/perpetuity/serializer_spec.rb
|
179
178
|
- spec/perpetuity/validations/length_spec.rb
|
180
179
|
- spec/perpetuity/validations/presence_spec.rb
|
181
180
|
- spec/perpetuity/validations_spec.rb
|
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--colour
|
data/Guardfile
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# A sample Guardfile
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
3
|
-
|
4
|
-
guard 'rspec', :version => 2 do
|
5
|
-
watch(%r{^spec/.+_spec\.rb$})
|
6
|
-
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
-
watch('spec/spec_helper.rb') { "spec" }
|
8
|
-
|
9
|
-
# Rails example
|
10
|
-
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
11
|
-
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
-
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
13
|
-
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
14
|
-
watch('config/routes.rb') { "spec/routing" }
|
15
|
-
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
16
|
-
|
17
|
-
# Capybara request specs
|
18
|
-
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
|
19
|
-
|
20
|
-
# Turnip features and steps
|
21
|
-
watch(%r{^spec/acceptance/(.+)\.feature$})
|
22
|
-
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
23
|
-
end
|
24
|
-
|