mongoid-eager-loading 0.2.0 → 0.3.0
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.lock +13 -12
- data/README.md +12 -10
- data/benchmark/benchmark.rb +11 -4
- data/lib/mongoid-eager-loading.rb +1 -6
- data/lib/mongoid-eager-loading/mongoid/criterion/eager_loading.rb +36 -36
- data/lib/mongoid-eager-loading/version.rb +1 -1
- data/mongoid-eager-loading.gemspec +4 -3
- data/spec/models/account.rb +11 -5
- data/spec/models/address.rb +8 -1
- data/spec/models/address_component.rb +5 -0
- data/spec/models/agent.rb +2 -3
- data/spec/models/animal.rb +8 -5
- data/spec/models/answer.rb +1 -1
- data/spec/models/bar.rb +5 -0
- data/spec/models/book.rb +5 -0
- data/spec/models/business.rb +7 -0
- data/spec/models/callbacks.rb +2 -2
- data/spec/models/category.rb +3 -3
- data/spec/models/country_code.rb +1 -1
- data/spec/models/description.rb +3 -0
- data/spec/models/drug.rb +5 -0
- data/spec/models/favorite.rb +1 -3
- data/spec/models/fruits.rb +11 -0
- data/spec/models/game.rb +2 -1
- data/spec/models/house.rb +4 -0
- data/spec/models/inheritance.rb +19 -4
- data/spec/models/location.rb +1 -1
- data/spec/models/membership.rb +4 -0
- data/spec/models/movie.rb +5 -0
- data/spec/models/name.rb +1 -1
- data/spec/models/page.rb +5 -0
- data/spec/models/page_question.rb +4 -0
- data/spec/models/paranoid_post.rb +1 -1
- data/spec/models/parents.rb +1 -1
- data/spec/models/patient.rb +2 -2
- data/spec/models/person.rb +27 -12
- data/spec/models/pet.rb +1 -1
- data/spec/models/pet_owner.rb +1 -1
- data/spec/models/phone.rb +1 -1
- data/spec/models/post.rb +6 -4
- data/spec/models/preference.rb +2 -1
- data/spec/models/question.rb +3 -3
- data/spec/models/quiz.rb +4 -0
- data/spec/models/rating.rb +6 -0
- data/spec/models/role.rb +5 -0
- data/spec/models/shelf.rb +5 -0
- data/spec/models/slave_address_numbers.rb +14 -0
- data/spec/models/survey.rb +1 -2
- data/spec/models/tracking_id_validation_history.rb +25 -0
- data/spec/models/translation.rb +1 -1
- data/spec/models/user.rb +3 -2
- data/spec/models/user_account.rb +3 -2
- data/spec/models/vet_visit.rb +1 -1
- data/spec/models/video.rb +1 -1
- data/spec/models/wiki_page.rb +6 -0
- data/spec/mongoid-eager-loading/mongoid/criterion/eager_loading_spec.rb +19 -0
- data/spec/spec_helper.rb +1 -1
- metadata +93 -59
data/spec/models/user_account.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class UserAccount
|
2
2
|
include Mongoid::Document
|
3
3
|
field :username
|
4
|
+
field :name
|
4
5
|
field :email
|
5
6
|
validates_uniqueness_of :username, :message => "is not unique"
|
6
7
|
validates_uniqueness_of :email, :message => "is not unique", :case_sensitive => false
|
7
|
-
|
8
|
-
|
8
|
+
validates_length_of :name, :minimum => 2, :allow_nil => true
|
9
|
+
references_and_referenced_in_many :people
|
9
10
|
end
|
data/spec/models/vet_visit.rb
CHANGED
data/spec/models/video.rb
CHANGED
@@ -26,19 +26,23 @@ describe Mongoid::Criterion::EagerLoading do
|
|
26
26
|
|
27
27
|
@person1 = Person.create(:title => "Sir", :age => 100, :aliases => ["D", "Durran"], :ssn => "666666666")
|
28
28
|
@person2 = Person.create(:title => "Madam", :age => 1, :ssn => "098-76-5434")
|
29
|
+
@person3 = Person.create(:title => "Sir", :age => 10, :aliases => ["R", "Richard"], :ssn => "111111111")
|
29
30
|
|
30
31
|
@game1 = @person1.create_game(:score => 10)
|
31
32
|
@game2 = @person2.create_game(:score => 20)
|
33
|
+
@game3 = Game.create(:score => 30)
|
32
34
|
|
33
35
|
@post1 = @person1.posts.create(:title => "post1")
|
34
36
|
@post2 = @person1.posts.create(:title => "post2")
|
35
37
|
@post3 = @person2.posts.create(:title => "post3")
|
36
38
|
@post4 = @person2.posts.create(:title => "post4")
|
39
|
+
@post5 = Post.create(:title => "post5")
|
37
40
|
|
38
41
|
@preference1 = @person1.preferences.create(:name => "preference1")
|
39
42
|
@preference2 = @person1.preferences.create(:name => "preference2")
|
40
43
|
@preference3 = @person2.preferences.create(:name => "preference3")
|
41
44
|
@preference4 = @person2.preferences.create(:name => "preference4")
|
45
|
+
@preference5 = Preference.create(:name => "preference5")
|
42
46
|
end
|
43
47
|
|
44
48
|
it "preload references_one association" do
|
@@ -52,13 +56,16 @@ describe Mongoid::Criterion::EagerLoading do
|
|
52
56
|
id_documents_map = criteria.send(:id_documents_map)
|
53
57
|
id_documents_map[@person1.id].should == [@person1]
|
54
58
|
id_documents_map[@person2.id].should == [@person2]
|
59
|
+
id_documents_map[@person3.id].should == [@person3]
|
55
60
|
|
56
61
|
id_associations_map = criteria.send(:id_associations_map)
|
57
62
|
id_associations_map[@person1.id].should == [@game1]
|
58
63
|
id_associations_map[@person2.id].should == [@game2]
|
64
|
+
id_associations_map[@person3.id].should == nil
|
59
65
|
|
60
66
|
@person1.game.should == @game1
|
61
67
|
@person2.game.should == @game2
|
68
|
+
@person3.game.should == nil
|
62
69
|
end
|
63
70
|
|
64
71
|
it "preload references_many association" do
|
@@ -72,13 +79,16 @@ describe Mongoid::Criterion::EagerLoading do
|
|
72
79
|
id_documents_map = criteria.send(:id_documents_map)
|
73
80
|
id_documents_map[@person1.id].should == [@person1]
|
74
81
|
id_documents_map[@person2.id].should == [@person2]
|
82
|
+
id_documents_map[@person3.id].should == [@person3]
|
75
83
|
|
76
84
|
id_associations_map = criteria.send(:id_associations_map)
|
77
85
|
id_associations_map[@person1.id].should == [@post1, @post2]
|
78
86
|
id_associations_map[@person2.id].should == [@post3, @post4]
|
87
|
+
id_associations_map[@person3.id].should == nil
|
79
88
|
|
80
89
|
@person1.posts.should == [@post1, @post2]
|
81
90
|
@person2.posts.should == [@post3, @post4]
|
91
|
+
@person3.posts.should == []
|
82
92
|
end
|
83
93
|
|
84
94
|
it "preload references_many_as_array association" do
|
@@ -94,15 +104,18 @@ describe Mongoid::Criterion::EagerLoading do
|
|
94
104
|
id_documents_map[@preference2.id].should == [@person1]
|
95
105
|
id_documents_map[@preference3.id].should == [@person2]
|
96
106
|
id_documents_map[@preference4.id].should == [@person2]
|
107
|
+
id_documents_map[@preference5.id].should == nil
|
97
108
|
|
98
109
|
id_associations_map = criteria.send(:id_associations_map)
|
99
110
|
id_associations_map[@preference1.id].should == [@preference1]
|
100
111
|
id_associations_map[@preference2.id].should == [@preference2]
|
101
112
|
id_associations_map[@preference3.id].should == [@preference3]
|
102
113
|
id_associations_map[@preference4.id].should == [@preference4]
|
114
|
+
id_associations_map[@preference5.id].should == nil
|
103
115
|
|
104
116
|
@person1.preferences.should == [@preference1, @preference2]
|
105
117
|
@person2.preferences.should == [@preference3, @preference4]
|
118
|
+
@person3.preferences.should == []
|
106
119
|
end
|
107
120
|
|
108
121
|
context "referenced_in" do
|
@@ -117,13 +130,16 @@ describe Mongoid::Criterion::EagerLoading do
|
|
117
130
|
id_documents_map = criteria.send(:id_documents_map)
|
118
131
|
id_documents_map[@person1.id].should == [@game1]
|
119
132
|
id_documents_map[@person2.id].should == [@game2]
|
133
|
+
id_documents_map[@person3.id].should == nil
|
120
134
|
|
121
135
|
id_associations_map = criteria.send(:id_associations_map)
|
122
136
|
id_associations_map[@person1.id].should == [@person1]
|
123
137
|
id_associations_map[@person2.id].should == [@person2]
|
138
|
+
id_associations_map[@person3.id].should == nil
|
124
139
|
|
125
140
|
@game1.person.should == @person1
|
126
141
|
@game2.person.should == @person2
|
142
|
+
@game3.person.should == nil
|
127
143
|
end
|
128
144
|
|
129
145
|
it "preload referenced_in association to references_many" do
|
@@ -137,15 +153,18 @@ describe Mongoid::Criterion::EagerLoading do
|
|
137
153
|
id_documents_map = criteria.send(:id_documents_map)
|
138
154
|
id_documents_map[@person1.id].should == [@post1, @post2]
|
139
155
|
id_documents_map[@person2.id].should == [@post3, @post4]
|
156
|
+
id_documents_map[@person3.id].should == nil
|
140
157
|
|
141
158
|
id_associations_map = criteria.send(:id_associations_map)
|
142
159
|
id_associations_map[@person1.id].should == [@person1]
|
143
160
|
id_associations_map[@person2.id].should == [@person2]
|
161
|
+
id_associations_map[@person3.id].should == nil
|
144
162
|
|
145
163
|
@post1.person.should == @person1
|
146
164
|
@post2.person.should == @person1
|
147
165
|
@post3.person.should == @person2
|
148
166
|
@post4.person.should == @person2
|
167
|
+
@post5.person.should == nil
|
149
168
|
end
|
150
169
|
end
|
151
170
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,8 +12,8 @@ require "rspec"
|
|
12
12
|
Mongoid.configure do |config|
|
13
13
|
name = "mongoid_test"
|
14
14
|
host = "localhost"
|
15
|
+
#config.master = Mongo::Connection.new(host, 27018, :logger => Logger.new($stdout)).db(name)
|
15
16
|
config.master = Mongo::Connection.new.db(name)
|
16
|
-
config.logger = nil
|
17
17
|
# config.slaves = [
|
18
18
|
# Mongo::Connection.new(host, 27018, :slave_ok => true).db(name)
|
19
19
|
# ]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-eager-loading
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 19
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Richard Huang
|
@@ -15,11 +15,12 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-20 00:00:00 +08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
@@ -30,104 +31,119 @@ dependencies:
|
|
30
31
|
- 0
|
31
32
|
- 0
|
32
33
|
version: 1.0.0
|
33
|
-
name: bundler
|
34
|
-
prerelease: false
|
35
34
|
type: :development
|
36
|
-
|
35
|
+
name: bundler
|
36
|
+
requirement: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
-
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
41
|
requirements:
|
41
42
|
- - "="
|
42
43
|
- !ruby/object:Gem::Version
|
43
|
-
hash:
|
44
|
+
hash: 31
|
44
45
|
segments:
|
46
|
+
- 1
|
45
47
|
- 2
|
46
48
|
- 0
|
47
|
-
|
48
|
-
- beta
|
49
|
-
- 20
|
50
|
-
version: 2.0.0.beta.20
|
51
|
-
name: mongoid
|
52
|
-
prerelease: false
|
49
|
+
version: 1.2.0
|
53
50
|
type: :development
|
54
|
-
|
51
|
+
name: mongo
|
52
|
+
requirement: *id002
|
55
53
|
- !ruby/object:Gem::Dependency
|
56
|
-
|
54
|
+
prerelease: false
|
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:
|
62
|
+
- 1
|
63
63
|
- 2
|
64
64
|
- 0
|
65
|
-
|
66
|
-
version: 2.0.0
|
67
|
-
name: rspec
|
68
|
-
prerelease: false
|
65
|
+
version: 1.2.0
|
69
66
|
type: :development
|
70
|
-
|
67
|
+
name: bson
|
68
|
+
requirement: *id003
|
71
69
|
- !ruby/object:Gem::Dependency
|
72
|
-
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
|
-
- - "
|
74
|
+
- - "="
|
76
75
|
- !ruby/object:Gem::Version
|
77
|
-
hash:
|
76
|
+
hash: 31
|
78
77
|
segments:
|
78
|
+
- 1
|
79
|
+
- 2
|
79
80
|
- 0
|
80
|
-
version:
|
81
|
-
name: mocha
|
82
|
-
prerelease: false
|
81
|
+
version: 1.2.0
|
83
82
|
type: :development
|
84
|
-
|
83
|
+
name: bson_ext
|
84
|
+
requirement: *id004
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
|
-
|
86
|
+
prerelease: false
|
87
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
87
88
|
none: false
|
88
89
|
requirements:
|
89
|
-
- - "
|
90
|
+
- - "="
|
90
91
|
- !ruby/object:Gem::Version
|
91
|
-
hash:
|
92
|
+
hash: 15424089
|
92
93
|
segments:
|
94
|
+
- 2
|
93
95
|
- 0
|
94
|
-
|
95
|
-
|
96
|
-
|
96
|
+
- 0
|
97
|
+
- rc
|
98
|
+
- 6
|
99
|
+
version: 2.0.0.rc.6
|
97
100
|
type: :development
|
98
|
-
|
101
|
+
name: mongoid
|
102
|
+
requirement: *id005
|
99
103
|
- !ruby/object:Gem::Dependency
|
100
|
-
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
106
|
none: false
|
102
107
|
requirements:
|
103
108
|
- - ~>
|
104
109
|
- !ruby/object:Gem::Version
|
105
|
-
hash:
|
110
|
+
hash: 15
|
106
111
|
segments:
|
107
|
-
-
|
108
|
-
-
|
109
|
-
-
|
110
|
-
version:
|
111
|
-
name: bson_ext
|
112
|
-
prerelease: false
|
112
|
+
- 2
|
113
|
+
- 0
|
114
|
+
- 0
|
115
|
+
version: 2.0.0
|
113
116
|
type: :development
|
114
|
-
|
117
|
+
name: rspec
|
118
|
+
requirement: *id006
|
115
119
|
- !ruby/object:Gem::Dependency
|
116
|
-
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
117
122
|
none: false
|
118
123
|
requirements:
|
119
|
-
- -
|
124
|
+
- - ">="
|
120
125
|
- !ruby/object:Gem::Version
|
121
|
-
hash:
|
126
|
+
hash: 3
|
122
127
|
segments:
|
123
|
-
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
+
- 0
|
129
|
+
version: "0"
|
130
|
+
type: :development
|
131
|
+
name: mocha
|
132
|
+
requirement: *id007
|
133
|
+
- !ruby/object:Gem::Dependency
|
128
134
|
prerelease: false
|
135
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
hash: 3
|
141
|
+
segments:
|
142
|
+
- 0
|
143
|
+
version: "0"
|
129
144
|
type: :development
|
130
|
-
|
145
|
+
name: watchr
|
146
|
+
requirement: *id008
|
131
147
|
description: eager loading for mongoid
|
132
148
|
email:
|
133
149
|
- flyerhzm@gmail.com
|
@@ -156,23 +172,34 @@ files:
|
|
156
172
|
- spec/config/mongoid.yml
|
157
173
|
- spec/models/account.rb
|
158
174
|
- spec/models/address.rb
|
175
|
+
- spec/models/address_component.rb
|
159
176
|
- spec/models/agent.rb
|
160
177
|
- spec/models/animal.rb
|
161
178
|
- spec/models/answer.rb
|
179
|
+
- spec/models/bar.rb
|
180
|
+
- spec/models/book.rb
|
181
|
+
- spec/models/business.rb
|
162
182
|
- spec/models/callbacks.rb
|
163
183
|
- spec/models/category.rb
|
164
184
|
- spec/models/comment.rb
|
165
185
|
- spec/models/country_code.rb
|
166
186
|
- spec/models/description.rb
|
187
|
+
- spec/models/drug.rb
|
167
188
|
- spec/models/employer.rb
|
168
189
|
- spec/models/favorite.rb
|
190
|
+
- spec/models/fruits.rb
|
169
191
|
- spec/models/game.rb
|
192
|
+
- spec/models/house.rb
|
170
193
|
- spec/models/inheritance.rb
|
171
194
|
- spec/models/location.rb
|
172
195
|
- spec/models/login.rb
|
196
|
+
- spec/models/membership.rb
|
173
197
|
- spec/models/mixed_drink.rb
|
198
|
+
- spec/models/movie.rb
|
174
199
|
- spec/models/name.rb
|
175
200
|
- spec/models/namespacing.rb
|
201
|
+
- spec/models/page.rb
|
202
|
+
- spec/models/page_question.rb
|
176
203
|
- spec/models/paranoid_post.rb
|
177
204
|
- spec/models/parents.rb
|
178
205
|
- spec/models/patient.rb
|
@@ -183,12 +210,19 @@ files:
|
|
183
210
|
- spec/models/post.rb
|
184
211
|
- spec/models/preference.rb
|
185
212
|
- spec/models/question.rb
|
213
|
+
- spec/models/quiz.rb
|
214
|
+
- spec/models/rating.rb
|
215
|
+
- spec/models/role.rb
|
216
|
+
- spec/models/shelf.rb
|
217
|
+
- spec/models/slave_address_numbers.rb
|
186
218
|
- spec/models/survey.rb
|
219
|
+
- spec/models/tracking_id_validation_history.rb
|
187
220
|
- spec/models/translation.rb
|
188
221
|
- spec/models/user.rb
|
189
222
|
- spec/models/user_account.rb
|
190
223
|
- spec/models/vet_visit.rb
|
191
224
|
- spec/models/video.rb
|
225
|
+
- spec/models/wiki_page.rb
|
192
226
|
- spec/mongoid-eager-loading/mongoid/criteria_spec.rb
|
193
227
|
- spec/mongoid-eager-loading/mongoid/criterion/eager_loading_spec.rb
|
194
228
|
- spec/spec_helper.rb
|
@@ -224,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
258
|
requirements: []
|
225
259
|
|
226
260
|
rubyforge_project: mongoid-eager-loading
|
227
|
-
rubygems_version: 1.
|
261
|
+
rubygems_version: 1.4.1
|
228
262
|
signing_key:
|
229
263
|
specification_version: 3
|
230
264
|
summary: eager loading for mongoid
|