bullet 4.5.0 → 4.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +7 -5
- data/bullet.gemspec +2 -2
- data/lib/bullet.rb +5 -15
- data/lib/bullet/active_record3.rb +8 -0
- data/lib/bullet/active_record3x.rb +10 -0
- data/lib/bullet/active_record4.rb +10 -0
- data/lib/bullet/dependency.rb +8 -21
- data/lib/bullet/detector/n_plus_one_query.rb +5 -3
- data/lib/bullet/rack.rb +17 -7
- data/lib/bullet/version.rb +1 -1
- data/spec/integration/association_spec.rb +13 -0
- data/spec/models/comment.rb +1 -1
- data/spec/models/post.rb +5 -12
- data/spec/spec_helper.rb +1 -7
- data/test.sh +0 -1
- metadata +5 -13
- data/Gemfile.rails-2.3.17 +0 -14
- data/README_for_rails2.textile +0 -400
- data/lib/bullet/action_controller2.rb +0 -50
- data/lib/bullet/active_record2.rb +0 -121
- data/spec/integration/rails2/association_spec.rb +0 -593
- data/spec/integration/rails2/counter_cache_spec.rb +0 -51
@@ -1,593 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
if active_record2?
|
4
|
-
describe Bullet::Detector::Association, 'has_many' do
|
5
|
-
before(:each) do
|
6
|
-
Bullet.clear
|
7
|
-
Bullet.start_request
|
8
|
-
end
|
9
|
-
|
10
|
-
after(:each) do
|
11
|
-
Bullet.end_request
|
12
|
-
end
|
13
|
-
|
14
|
-
context "post => comments" do
|
15
|
-
it "should detect non preload post => comments" do
|
16
|
-
Post.all.each do |post|
|
17
|
-
post.comments.map(&:name)
|
18
|
-
end
|
19
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
20
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
21
|
-
|
22
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Post, :comments)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should detect preload with post => comments" do
|
26
|
-
Post.all(:include => :comments).each do |post|
|
27
|
-
post.comments.map(&:name)
|
28
|
-
end
|
29
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
30
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
31
|
-
|
32
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should detect unused preload post => comments" do
|
36
|
-
Post.all(:include => :comments).map(&:name)
|
37
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
38
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Post, :comments)
|
39
|
-
|
40
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should not detect unused preload post => comments" do
|
44
|
-
Post.all.map(&:name)
|
45
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
46
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
47
|
-
|
48
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "category => posts => comments" do
|
53
|
-
it "should detect non preload category => posts => comments" do
|
54
|
-
Category.all.each do |category|
|
55
|
-
category.posts.each do |post|
|
56
|
-
post.comments.map(&:name)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
60
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
61
|
-
|
62
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Category, :posts)
|
63
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Post, :comments)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should detect preload category => posts, but no post => comments" do
|
67
|
-
Category.all(:include => :posts).each do |category|
|
68
|
-
category.posts.each do |post|
|
69
|
-
post.comments.collect(&:name)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
73
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
74
|
-
|
75
|
-
Bullet::Detector::Association.should_not be_detecting_unpreloaded_association_for(Category, :posts)
|
76
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Post, :comments)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should detect preload with category => posts => comments" do
|
80
|
-
Category.all(:include => {:posts => :comments}).each do |category|
|
81
|
-
category.posts.each do |post|
|
82
|
-
post.comments.map(&:name)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
86
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
87
|
-
|
88
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should detect unused preload with category => posts => comments" do
|
92
|
-
Category.all(:include => {:posts => :comments}).map(&:name)
|
93
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
94
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Post, :comments)
|
95
|
-
|
96
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should detect unused preload with post => commnets, no category => posts" do
|
100
|
-
Category.all(:include => {:posts => :comments}).each do |category|
|
101
|
-
category.posts.map(&:name)
|
102
|
-
end
|
103
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
104
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Post, :comments)
|
105
|
-
|
106
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
context "category => posts, category => entries" do
|
111
|
-
it "should detect non preload with category => [posts, entries]" do
|
112
|
-
Category.all.each do |category|
|
113
|
-
category.posts.map(&:name)
|
114
|
-
category.entries.map(&:name)
|
115
|
-
end
|
116
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
117
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
118
|
-
|
119
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Category, :posts)
|
120
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Category, :entries)
|
121
|
-
end
|
122
|
-
|
123
|
-
it "should detect preload with category => posts, but not with category => entries" do
|
124
|
-
Category.all(:include => :posts).each do |category|
|
125
|
-
category.posts.map(&:name)
|
126
|
-
category.entries.map(&:name)
|
127
|
-
end
|
128
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
129
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
130
|
-
|
131
|
-
Bullet::Detector::Association.should_not be_detecting_unpreloaded_association_for(Category, :posts)
|
132
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Category, :entries)
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should detect preload with category => [posts, entries]" do
|
136
|
-
Category.all(:include => [:posts, :entries]).each do |category|
|
137
|
-
category.posts.map(&:name)
|
138
|
-
category.entries.map(&:name)
|
139
|
-
end
|
140
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
141
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
142
|
-
|
143
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should detect unused preload with category => [posts, entries]" do
|
147
|
-
Category.all(:include => [:posts, :entries]).map(&:name)
|
148
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
149
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Category, :posts)
|
150
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Category, :entries)
|
151
|
-
|
152
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should detect unused preload with category => entries, but not with category => posts" do
|
156
|
-
Category.all(:include => [:posts, :entries]).each do |category|
|
157
|
-
category.posts.map(&:name)
|
158
|
-
end
|
159
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
160
|
-
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Category, :posts)
|
161
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Category, :entries)
|
162
|
-
|
163
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
context "post => comment" do
|
168
|
-
it "should detect unused preload with post => comments" do
|
169
|
-
Post.all(:include => :comments).each do |post|
|
170
|
-
post.comments.first.name
|
171
|
-
end
|
172
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
173
|
-
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Post, :comments)
|
174
|
-
|
175
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
176
|
-
end
|
177
|
-
|
178
|
-
it "should detect preload with post => commnets" do
|
179
|
-
Post.first.comments.collect(&:name)
|
180
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
181
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
182
|
-
|
183
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
context "category => posts => writer" do
|
188
|
-
it "should not detect unused preload associations" do
|
189
|
-
category = Category.first(:include => {:posts => :writer}, :order => "id DESC", :conditions => {:name => 'first'})
|
190
|
-
category.posts.map do |post|
|
191
|
-
post.name
|
192
|
-
post.writer.name
|
193
|
-
end
|
194
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
195
|
-
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Category, :posts)
|
196
|
-
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Post, :writer)
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
context "scope for_category_name" do
|
201
|
-
it "should detect preload with post => category" do
|
202
|
-
Post.in_category_name('first').all.each do |post|
|
203
|
-
post.category.name
|
204
|
-
end
|
205
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
206
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
207
|
-
|
208
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
209
|
-
end
|
210
|
-
|
211
|
-
it "should not be unused preload post => category" do
|
212
|
-
Post.in_category_name('first').all.map(&:name)
|
213
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
214
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
215
|
-
|
216
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
context "scope preload_comments" do
|
221
|
-
it "should detect preload post => comments with scope" do
|
222
|
-
Post.preload_comments.each do |post|
|
223
|
-
post.comments.map(&:name)
|
224
|
-
end
|
225
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
226
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
227
|
-
|
228
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
229
|
-
end
|
230
|
-
|
231
|
-
it "should detect unused preload with scope" do
|
232
|
-
Post.preload_comments.map(&:name)
|
233
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
234
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Post, :comments)
|
235
|
-
|
236
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
describe Bullet::Detector::Association, 'belongs_to' do
|
242
|
-
before(:each) do
|
243
|
-
Bullet.clear
|
244
|
-
Bullet.start_request
|
245
|
-
end
|
246
|
-
|
247
|
-
after(:each) do
|
248
|
-
Bullet.end_request
|
249
|
-
end
|
250
|
-
|
251
|
-
context "comment => post" do
|
252
|
-
it "should detect non preload with comment => post" do
|
253
|
-
Comment.all.each do |comment|
|
254
|
-
comment.post.name
|
255
|
-
end
|
256
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
257
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
258
|
-
|
259
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Comment, :post)
|
260
|
-
end
|
261
|
-
|
262
|
-
it "should detect preload with one comment => post" do
|
263
|
-
Comment.first.post.name
|
264
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
265
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
266
|
-
|
267
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
268
|
-
end
|
269
|
-
|
270
|
-
it "should dtect preload with comment => post" do
|
271
|
-
Comment.all(:include => :post).each do |comment|
|
272
|
-
comment.post.name
|
273
|
-
end
|
274
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
275
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
276
|
-
|
277
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
278
|
-
end
|
279
|
-
|
280
|
-
it "should not detect preload with comment => post" do
|
281
|
-
Comment.all.collect(&:name)
|
282
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
283
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
284
|
-
|
285
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
286
|
-
end
|
287
|
-
|
288
|
-
it "should detect unused preload with comments => post" do
|
289
|
-
Comment.all(:include => :post).map(&:name)
|
290
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
291
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Comment, :post)
|
292
|
-
|
293
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
294
|
-
end
|
295
|
-
end
|
296
|
-
|
297
|
-
context "comment => post => category" do
|
298
|
-
it "should detect non preload association with comment => post" do
|
299
|
-
Comment.all.each do |comment|
|
300
|
-
comment.post.category.name
|
301
|
-
end
|
302
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
303
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
304
|
-
|
305
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Comment, :post)
|
306
|
-
end
|
307
|
-
|
308
|
-
it "should detect non preload association with post => category" do
|
309
|
-
Comment.all(:include => :post).each do |comment|
|
310
|
-
comment.post.category.name
|
311
|
-
end
|
312
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
313
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
314
|
-
|
315
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Post, :category)
|
316
|
-
end
|
317
|
-
|
318
|
-
it "should not detect unpreload association" do
|
319
|
-
Comment.all(:include => {:post => :category}).each do |comment|
|
320
|
-
comment.post.category.name
|
321
|
-
end
|
322
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
323
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
324
|
-
|
325
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
326
|
-
end
|
327
|
-
end
|
328
|
-
|
329
|
-
context "comment => author, post => writer" do
|
330
|
-
# this happens because the post isn't a possible object even though the writer is access through the post
|
331
|
-
# which leads to an 1+N queries
|
332
|
-
it "should detect non preloaded writer" do
|
333
|
-
Comment.all(:include => [:author, :post], :conditions => ["base_users.id = ?", BaseUser.first]).each do |comment|
|
334
|
-
comment.post.writer.name
|
335
|
-
end
|
336
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
337
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
338
|
-
|
339
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Post, :writer)
|
340
|
-
end
|
341
|
-
|
342
|
-
# this happens because the comment doesn't break down the hash into keys
|
343
|
-
# properly creating an association from comment to post
|
344
|
-
it "should detect unused preload with comment => author" do
|
345
|
-
Comment.all(:include => [:author, {:post => :writer}], :conditions => ["base_users.id = ?", BaseUser.first]).each do |comment|
|
346
|
-
comment.post.writer.name
|
347
|
-
end
|
348
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
349
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Comment, :author)
|
350
|
-
|
351
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
352
|
-
end
|
353
|
-
|
354
|
-
# To flyerhzm: This does not detect that newspaper is unpreloaded. The association is
|
355
|
-
# not within possible objects, and thus cannot be detected as unpreloaded
|
356
|
-
it "should detect non preloading with writer => newspaper" do
|
357
|
-
Comment.all(:include => {:post => :writer}, :conditions => "posts.name like '%first%'").each do |comment|
|
358
|
-
comment.post.writer.newspaper.name
|
359
|
-
end
|
360
|
-
#Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
361
|
-
#Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
362
|
-
|
363
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Writer, :newspaper)
|
364
|
-
end
|
365
|
-
|
366
|
-
# when we attempt to access category, there is an infinite overflow because load_target is hijacked leading to
|
367
|
-
# a repeating loop of calls in this test
|
368
|
-
it "should not raise a stack error from posts to category" do
|
369
|
-
lambda {
|
370
|
-
Comment.all(:include => {:post => :category}).each do |com|
|
371
|
-
com.post.category
|
372
|
-
end
|
373
|
-
}.should_not raise_error(SystemStackError)
|
374
|
-
end
|
375
|
-
end
|
376
|
-
end
|
377
|
-
|
378
|
-
describe Bullet::Detector::Association, 'has_and_belongs_to_many' do
|
379
|
-
before(:each) do
|
380
|
-
Bullet.clear
|
381
|
-
Bullet.start_request
|
382
|
-
end
|
383
|
-
|
384
|
-
after(:each) do
|
385
|
-
Bullet.end_request
|
386
|
-
end
|
387
|
-
|
388
|
-
context "students <=> teachers" do
|
389
|
-
it "should detect non preload associations" do
|
390
|
-
Student.all.each do |student|
|
391
|
-
student.teachers.map(&:name)
|
392
|
-
end
|
393
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
394
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
395
|
-
|
396
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Student, :teachers)
|
397
|
-
end
|
398
|
-
|
399
|
-
it "should detect preload associations" do
|
400
|
-
Student.all(:include => :teachers).each do |student|
|
401
|
-
student.teachers.map(&:name)
|
402
|
-
end
|
403
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
404
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
405
|
-
|
406
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
407
|
-
end
|
408
|
-
|
409
|
-
it "should detect unused preload associations" do
|
410
|
-
Student.all(:include => :teachers).map(&:name)
|
411
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
412
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Student, :teachers)
|
413
|
-
|
414
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
415
|
-
end
|
416
|
-
|
417
|
-
it "should detect no unused preload associations" do
|
418
|
-
Student.all.collect(&:name)
|
419
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
420
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
421
|
-
|
422
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
423
|
-
end
|
424
|
-
end
|
425
|
-
end
|
426
|
-
|
427
|
-
describe Bullet::Detector::Association, 'has_many :through' do
|
428
|
-
before(:each) do
|
429
|
-
Bullet.clear
|
430
|
-
Bullet.start_request
|
431
|
-
end
|
432
|
-
|
433
|
-
after(:each) do
|
434
|
-
Bullet.end_request
|
435
|
-
end
|
436
|
-
|
437
|
-
context "firm => clients" do
|
438
|
-
it "should detect non preload associations" do
|
439
|
-
Firm.all.each do |firm|
|
440
|
-
firm.clients.map(&:name)
|
441
|
-
end
|
442
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
443
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
444
|
-
|
445
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Firm, :clients)
|
446
|
-
end
|
447
|
-
|
448
|
-
it "should detect preload associations" do
|
449
|
-
Firm.all(:include => :clients).each do |firm|
|
450
|
-
firm.clients.map(&:name)
|
451
|
-
end
|
452
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
453
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
454
|
-
|
455
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
456
|
-
end
|
457
|
-
|
458
|
-
it "should not detect preload associations" do
|
459
|
-
Firm.all.collect(&:name)
|
460
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
461
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
462
|
-
|
463
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
464
|
-
end
|
465
|
-
|
466
|
-
it "should detect unused preload associations" do
|
467
|
-
Firm.all(:include => :clients).collect(&:name)
|
468
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
469
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Firm, :clients)
|
470
|
-
|
471
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
472
|
-
end
|
473
|
-
end
|
474
|
-
end
|
475
|
-
|
476
|
-
describe Bullet::Detector::Association, "has_one" do
|
477
|
-
before(:each) do
|
478
|
-
Bullet.clear
|
479
|
-
Bullet.start_request
|
480
|
-
end
|
481
|
-
|
482
|
-
after(:each) do
|
483
|
-
Bullet.end_request
|
484
|
-
end
|
485
|
-
|
486
|
-
context "company => address" do
|
487
|
-
it "should detect non preload association" do
|
488
|
-
Company.all.each do |company|
|
489
|
-
company.address.name
|
490
|
-
end
|
491
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
492
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
493
|
-
|
494
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Company, :address)
|
495
|
-
end
|
496
|
-
|
497
|
-
it "should detect preload association" do
|
498
|
-
Company.find(:all, :include => :address).each do |company|
|
499
|
-
company.address.name
|
500
|
-
end
|
501
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
502
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
503
|
-
|
504
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
505
|
-
end
|
506
|
-
|
507
|
-
it "should not detect preload association" do
|
508
|
-
Company.all.collect(&:name)
|
509
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
510
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
511
|
-
|
512
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
513
|
-
end
|
514
|
-
|
515
|
-
it "should detect unused preload association" do
|
516
|
-
Company.find(:all, :include => :address).collect(&:name)
|
517
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
518
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Company, :address)
|
519
|
-
|
520
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
521
|
-
end
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
describe Bullet::Detector::Association, "call one association that in possible objects" do
|
526
|
-
before(:each) do
|
527
|
-
Bullet.clear
|
528
|
-
Bullet.start_request
|
529
|
-
end
|
530
|
-
|
531
|
-
after(:each) do
|
532
|
-
Bullet.end_request
|
533
|
-
end
|
534
|
-
|
535
|
-
it "should not detect preload association" do
|
536
|
-
Post.all
|
537
|
-
Post.first.comments.map(&:name)
|
538
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
539
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
540
|
-
|
541
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
542
|
-
end
|
543
|
-
end
|
544
|
-
|
545
|
-
describe Bullet::Detector::Association, "STI" do
|
546
|
-
before(:each) do
|
547
|
-
Bullet.clear
|
548
|
-
Bullet.start_request
|
549
|
-
end
|
550
|
-
|
551
|
-
after(:each) do
|
552
|
-
Bullet.end_request
|
553
|
-
end
|
554
|
-
|
555
|
-
context "page => author" do
|
556
|
-
it "should detect non preload associations" do
|
557
|
-
Page.all.each do |page|
|
558
|
-
page.author.name
|
559
|
-
end
|
560
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
561
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
562
|
-
|
563
|
-
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Page, :author)
|
564
|
-
end
|
565
|
-
|
566
|
-
it "should detect preload associations" do
|
567
|
-
Page.find(:all, :include => :author).each do |page|
|
568
|
-
page.author.name
|
569
|
-
end
|
570
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
571
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
572
|
-
|
573
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
574
|
-
end
|
575
|
-
|
576
|
-
it "should detect unused preload associations" do
|
577
|
-
Page.find(:all, :include => :author).collect(&:name)
|
578
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
579
|
-
Bullet::Detector::Association.should be_unused_preload_associations_for(Page, :author)
|
580
|
-
|
581
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
582
|
-
end
|
583
|
-
|
584
|
-
it "should not detect preload associations" do
|
585
|
-
Page.all.collect(&:name)
|
586
|
-
Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
|
587
|
-
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
588
|
-
|
589
|
-
Bullet::Detector::Association.should be_completely_preloading_associations
|
590
|
-
end
|
591
|
-
end
|
592
|
-
end
|
593
|
-
end
|