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.
Files changed (58) hide show
  1. data/Gemfile.lock +13 -12
  2. data/README.md +12 -10
  3. data/benchmark/benchmark.rb +11 -4
  4. data/lib/mongoid-eager-loading.rb +1 -6
  5. data/lib/mongoid-eager-loading/mongoid/criterion/eager_loading.rb +36 -36
  6. data/lib/mongoid-eager-loading/version.rb +1 -1
  7. data/mongoid-eager-loading.gemspec +4 -3
  8. data/spec/models/account.rb +11 -5
  9. data/spec/models/address.rb +8 -1
  10. data/spec/models/address_component.rb +5 -0
  11. data/spec/models/agent.rb +2 -3
  12. data/spec/models/animal.rb +8 -5
  13. data/spec/models/answer.rb +1 -1
  14. data/spec/models/bar.rb +5 -0
  15. data/spec/models/book.rb +5 -0
  16. data/spec/models/business.rb +7 -0
  17. data/spec/models/callbacks.rb +2 -2
  18. data/spec/models/category.rb +3 -3
  19. data/spec/models/country_code.rb +1 -1
  20. data/spec/models/description.rb +3 -0
  21. data/spec/models/drug.rb +5 -0
  22. data/spec/models/favorite.rb +1 -3
  23. data/spec/models/fruits.rb +11 -0
  24. data/spec/models/game.rb +2 -1
  25. data/spec/models/house.rb +4 -0
  26. data/spec/models/inheritance.rb +19 -4
  27. data/spec/models/location.rb +1 -1
  28. data/spec/models/membership.rb +4 -0
  29. data/spec/models/movie.rb +5 -0
  30. data/spec/models/name.rb +1 -1
  31. data/spec/models/page.rb +5 -0
  32. data/spec/models/page_question.rb +4 -0
  33. data/spec/models/paranoid_post.rb +1 -1
  34. data/spec/models/parents.rb +1 -1
  35. data/spec/models/patient.rb +2 -2
  36. data/spec/models/person.rb +27 -12
  37. data/spec/models/pet.rb +1 -1
  38. data/spec/models/pet_owner.rb +1 -1
  39. data/spec/models/phone.rb +1 -1
  40. data/spec/models/post.rb +6 -4
  41. data/spec/models/preference.rb +2 -1
  42. data/spec/models/question.rb +3 -3
  43. data/spec/models/quiz.rb +4 -0
  44. data/spec/models/rating.rb +6 -0
  45. data/spec/models/role.rb +5 -0
  46. data/spec/models/shelf.rb +5 -0
  47. data/spec/models/slave_address_numbers.rb +14 -0
  48. data/spec/models/survey.rb +1 -2
  49. data/spec/models/tracking_id_validation_history.rb +25 -0
  50. data/spec/models/translation.rb +1 -1
  51. data/spec/models/user.rb +3 -2
  52. data/spec/models/user_account.rb +3 -2
  53. data/spec/models/vet_visit.rb +1 -1
  54. data/spec/models/video.rb +1 -1
  55. data/spec/models/wiki_page.rb +6 -0
  56. data/spec/mongoid-eager-loading/mongoid/criterion/eager_loading_spec.rb +19 -0
  57. data/spec/spec_helper.rb +1 -1
  58. metadata +93 -59
@@ -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
- referenced_in :person, :inverse_of => :user_accounts
8
+ validates_length_of :name, :minimum => 2, :allow_nil => true
9
+ references_and_referenced_in_many :people
9
10
  end
@@ -1,5 +1,5 @@
1
1
  class VetVisit
2
2
  include Mongoid::Document
3
3
  field :date, :type => Date
4
- embedded_in :pet, :inverse_of => :vet_visits
4
+ embedded_in :pet
5
5
  end
@@ -1,5 +1,5 @@
1
1
  class Video
2
2
  include Mongoid::Document
3
3
  field :title
4
- embedded_in :person, :inverse_of => :videos
4
+ embedded_in :person
5
5
  end
@@ -0,0 +1,6 @@
1
+ class WikiPage
2
+ include Mongoid::Document
3
+ include Mongoid::Versioning
4
+ field :title, :type => String
5
+ max_versions 5
6
+ end
@@ -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
@@ -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: 23
5
- prerelease: false
4
+ hash: 19
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.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-19 00:00:00 +08:00
18
+ date: 2011-01-20 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
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
- version_requirements: *id001
35
+ name: bundler
36
+ requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- requirement: &id002 !ruby/object:Gem::Requirement
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: 62196427
44
+ hash: 31
44
45
  segments:
46
+ - 1
45
47
  - 2
46
48
  - 0
47
- - 0
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
- version_requirements: *id002
51
+ name: mongo
52
+ requirement: *id002
55
53
  - !ruby/object:Gem::Dependency
56
- requirement: &id003 !ruby/object:Gem::Requirement
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: 15
60
+ hash: 31
62
61
  segments:
62
+ - 1
63
63
  - 2
64
64
  - 0
65
- - 0
66
- version: 2.0.0
67
- name: rspec
68
- prerelease: false
65
+ version: 1.2.0
69
66
  type: :development
70
- version_requirements: *id003
67
+ name: bson
68
+ requirement: *id003
71
69
  - !ruby/object:Gem::Dependency
72
- requirement: &id004 !ruby/object:Gem::Requirement
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: 3
76
+ hash: 31
78
77
  segments:
78
+ - 1
79
+ - 2
79
80
  - 0
80
- version: "0"
81
- name: mocha
82
- prerelease: false
81
+ version: 1.2.0
83
82
  type: :development
84
- version_requirements: *id004
83
+ name: bson_ext
84
+ requirement: *id004
85
85
  - !ruby/object:Gem::Dependency
86
- requirement: &id005 !ruby/object:Gem::Requirement
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: 3
92
+ hash: 15424089
92
93
  segments:
94
+ - 2
93
95
  - 0
94
- version: "0"
95
- name: watchr
96
- prerelease: false
96
+ - 0
97
+ - rc
98
+ - 6
99
+ version: 2.0.0.rc.6
97
100
  type: :development
98
- version_requirements: *id005
101
+ name: mongoid
102
+ requirement: *id005
99
103
  - !ruby/object:Gem::Dependency
100
- requirement: &id006 !ruby/object:Gem::Requirement
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: 17
110
+ hash: 15
106
111
  segments:
107
- - 1
108
- - 1
109
- - 1
110
- version: 1.1.1
111
- name: bson_ext
112
- prerelease: false
112
+ - 2
113
+ - 0
114
+ - 0
115
+ version: 2.0.0
113
116
  type: :development
114
- version_requirements: *id006
117
+ name: rspec
118
+ requirement: *id006
115
119
  - !ruby/object:Gem::Dependency
116
- requirement: &id007 !ruby/object:Gem::Requirement
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: 17
126
+ hash: 3
122
127
  segments:
123
- - 1
124
- - 1
125
- - 1
126
- version: 1.1.1
127
- name: mongo
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
- version_requirements: *id007
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.3.7
261
+ rubygems_version: 1.4.1
228
262
  signing_key:
229
263
  specification_version: 3
230
264
  summary: eager loading for mongoid