bullet 5.9.0 → 6.1.1

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 (64) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +22 -1
  3. data/CHANGELOG.md +27 -0
  4. data/Gemfile.rails-4.0 +1 -1
  5. data/Gemfile.rails-4.1 +1 -1
  6. data/Gemfile.rails-4.2 +1 -1
  7. data/Gemfile.rails-5.0 +1 -1
  8. data/Gemfile.rails-5.1 +1 -1
  9. data/Gemfile.rails-5.2 +1 -1
  10. data/Gemfile.rails-6.0 +15 -0
  11. data/Gemfile.rails-6.1 +15 -0
  12. data/README.md +31 -10
  13. data/lib/bullet.rb +50 -26
  14. data/lib/bullet/active_job.rb +13 -0
  15. data/lib/bullet/active_record4.rb +9 -32
  16. data/lib/bullet/active_record41.rb +7 -27
  17. data/lib/bullet/active_record42.rb +8 -24
  18. data/lib/bullet/active_record5.rb +188 -179
  19. data/lib/bullet/active_record52.rb +176 -168
  20. data/lib/bullet/active_record60.rb +267 -0
  21. data/lib/bullet/active_record61.rb +267 -0
  22. data/lib/bullet/bullet_xhr.js +63 -0
  23. data/lib/bullet/dependency.rb +50 -36
  24. data/lib/bullet/detector/association.rb +26 -20
  25. data/lib/bullet/detector/base.rb +1 -2
  26. data/lib/bullet/detector/counter_cache.rb +13 -9
  27. data/lib/bullet/detector/n_plus_one_query.rb +22 -12
  28. data/lib/bullet/detector/unused_eager_loading.rb +6 -3
  29. data/lib/bullet/ext/object.rb +4 -2
  30. data/lib/bullet/mongoid4x.rb +2 -6
  31. data/lib/bullet/mongoid5x.rb +2 -6
  32. data/lib/bullet/mongoid6x.rb +2 -6
  33. data/lib/bullet/mongoid7x.rb +2 -6
  34. data/lib/bullet/notification/base.rb +14 -18
  35. data/lib/bullet/notification/n_plus_one_query.rb +2 -4
  36. data/lib/bullet/notification/unused_eager_loading.rb +2 -4
  37. data/lib/bullet/rack.rb +50 -25
  38. data/lib/bullet/stack_trace_filter.rb +6 -12
  39. data/lib/bullet/version.rb +1 -1
  40. data/lib/generators/bullet/install_generator.rb +23 -23
  41. data/perf/benchmark.rb +8 -14
  42. data/spec/bullet/detector/counter_cache_spec.rb +6 -6
  43. data/spec/bullet/detector/n_plus_one_query_spec.rb +7 -3
  44. data/spec/bullet/detector/unused_eager_loading_spec.rb +19 -6
  45. data/spec/bullet/ext/object_spec.rb +9 -4
  46. data/spec/bullet/notification/base_spec.rb +1 -3
  47. data/spec/bullet/notification/n_plus_one_query_spec.rb +16 -3
  48. data/spec/bullet/notification/unused_eager_loading_spec.rb +5 -1
  49. data/spec/bullet/rack_spec.rb +86 -6
  50. data/spec/bullet/registry/association_spec.rb +2 -2
  51. data/spec/bullet/registry/base_spec.rb +1 -1
  52. data/spec/bullet_spec.rb +11 -30
  53. data/spec/integration/active_record/association_spec.rb +44 -136
  54. data/spec/integration/counter_cache_spec.rb +11 -31
  55. data/spec/integration/mongoid/association_spec.rb +18 -32
  56. data/spec/models/folder.rb +1 -2
  57. data/spec/models/group.rb +1 -2
  58. data/spec/models/page.rb +1 -2
  59. data/spec/models/writer.rb +1 -2
  60. data/spec/spec_helper.rb +6 -10
  61. data/spec/support/bullet_ext.rb +8 -9
  62. data/spec/support/mongo_seed.rb +2 -16
  63. data/test.sh +1 -0
  64. metadata +12 -7
@@ -16,11 +16,11 @@ module Bullet
16
16
 
17
17
  context '#similarly_associated' do
18
18
  it 'should return similarly associated keys' do
19
- expect(subject.similarly_associated('key1', Set.new(['value']))).to eq(%w[key1 key2])
19
+ expect(subject.similarly_associated('key1', Set.new(%w[value]))).to eq(%w[key1 key2])
20
20
  end
21
21
 
22
22
  it 'should return empty if key does not exist' do
23
- expect(subject.similarly_associated('key3', Set.new(['value']))).to be_empty
23
+ expect(subject.similarly_associated('key3', Set.new(%w[value]))).to be_empty
24
24
  end
25
25
  end
26
26
  end
@@ -9,7 +9,7 @@ module Bullet
9
9
 
10
10
  context '#[]' do
11
11
  it 'should get value by key' do
12
- expect(subject['key']).to eq(Set.new(['value']))
12
+ expect(subject['key']).to eq(Set.new(%w[value]))
13
13
  end
14
14
  end
15
15
 
@@ -17,9 +17,7 @@ describe Bullet, focused: true do
17
17
  end
18
18
 
19
19
  context 'disable Bullet' do
20
- before do
21
- Bullet.enable = false
22
- end
20
+ before { Bullet.enable = false }
23
21
 
24
22
  it 'should be disabled' do
25
23
  expect(subject).to_not be_enable
@@ -27,8 +25,8 @@ describe Bullet, focused: true do
27
25
 
28
26
  context 'enable Bullet again without patching again the orms' do
29
27
  before do
30
- expect(Bullet::Mongoid).not_to receive(:enable) if defined? Bullet::Mongoid
31
- expect(Bullet::ActiveRecord).not_to receive(:enable) if defined? Bullet::ActiveRecord
28
+ expect(Bullet::Mongoid).not_to receive(:enable) if defined?(Bullet::Mongoid)
29
+ expect(Bullet::ActiveRecord).not_to receive(:enable) if defined?(Bullet::ActiveRecord)
32
30
  Bullet.enable = true
33
31
  end
34
32
 
@@ -42,9 +40,7 @@ describe Bullet, focused: true do
42
40
 
43
41
  describe '#start?' do
44
42
  context 'when bullet is disabled' do
45
- before(:each) do
46
- Bullet.enable = false
47
- end
43
+ before(:each) { Bullet.enable = false }
48
44
 
49
45
  it 'should not be started' do
50
46
  expect(Bullet).not_to be_start
@@ -53,28 +49,19 @@ describe Bullet, focused: true do
53
49
  end
54
50
 
55
51
  describe '#debug' do
56
- before(:each) do
57
- $stdout = StringIO.new
58
- end
52
+ before(:each) { $stdout = StringIO.new }
59
53
 
60
- after(:each) do
61
- $stdout = STDOUT
62
- end
54
+ after(:each) { $stdout = STDOUT }
63
55
 
64
56
  context 'when debug is enabled' do
65
- before(:each) do
66
- ENV['BULLET_DEBUG'] = 'true'
67
- end
57
+ before(:each) { ENV['BULLET_DEBUG'] = 'true' }
68
58
 
69
- after(:each) do
70
- ENV['BULLET_DEBUG'] = 'false'
71
- end
59
+ after(:each) { ENV['BULLET_DEBUG'] = 'false' }
72
60
 
73
61
  it 'should output debug information' do
74
62
  Bullet.debug('debug_message', 'this is helpful information')
75
63
 
76
- expect($stdout.string)
77
- .to eq("[Bullet][debug_message] this is helpful information\n")
64
+ expect($stdout.string).to eq("[Bullet][debug_message] this is helpful information\n")
78
65
  end
79
66
  end
80
67
 
@@ -101,7 +88,7 @@ describe Bullet, focused: true do
101
88
  it 'is deleted from the whitelist successfully' do
102
89
  Bullet.add_whitelist(type: :n_plus_one_query, class_name: 'Klass', association: :department)
103
90
  Bullet.delete_whitelist(type: :n_plus_one_query, class_name: 'Klass', association: :department)
104
- expect(Bullet.whitelist[:n_plus_one_query]).to eq({})
91
+ expect(Thread.current[:whitelist][:n_plus_one_query]).to eq({})
105
92
  end
106
93
  end
107
94
 
@@ -125,13 +112,7 @@ describe Bullet, focused: true do
125
112
  end
126
113
 
127
114
  context 'when called with Rack environment hash' do
128
- let(:env) {
129
- {
130
- 'REQUEST_METHOD' => 'GET',
131
- 'PATH_INFO' => '/path',
132
- 'QUERY_STRING' => 'foo=bar'
133
- }
134
- }
115
+ let(:env) { { 'REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/path', 'QUERY_STRING' => 'foo=bar' } }
135
116
 
136
117
  context "when env['REQUEST_URI'] is nil" do
137
118
  before { env['REQUEST_URI'] = nil }
@@ -6,9 +6,7 @@ if active_record?
6
6
  describe Bullet::Detector::Association, 'has_many' do
7
7
  context 'post => comments' do
8
8
  it 'should detect non preload post => comments' do
9
- Post.all.each do |post|
10
- post.comments.map(&:name)
11
- end
9
+ Post.all.each { |post| post.comments.map(&:name) }
12
10
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
13
11
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
14
12
 
@@ -16,9 +14,7 @@ if active_record?
16
14
  end
17
15
 
18
16
  it 'should detect non preload post => comments for find_by_sql' do
19
- Post.find_by_sql('SELECT * FROM posts').each do |post|
20
- post.comments.map(&:name)
21
- end
17
+ Post.find_by_sql('SELECT * FROM posts').each { |post| post.comments.map(&:name) }
22
18
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
23
19
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
24
20
 
@@ -26,9 +22,7 @@ if active_record?
26
22
  end
27
23
 
28
24
  it 'should detect preload with post => comments' do
29
- Post.includes(:comments).each do |post|
30
- post.comments.map(&:name)
31
- end
25
+ Post.includes(:comments).each { |post| post.comments.map(&:name) }
32
26
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
33
27
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
34
28
 
@@ -65,9 +59,7 @@ if active_record?
65
59
  end
66
60
 
67
61
  it 'should detect non preload post => comments with empty?' do
68
- Post.all.each do |post|
69
- post.comments.empty?
70
- end
62
+ Post.all.each { |post| post.comments.empty? }
71
63
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
72
64
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
73
65
 
@@ -76,9 +68,7 @@ if active_record?
76
68
 
77
69
  it 'should detect non preload post => comments with include?' do
78
70
  comment = Comment.last
79
- Post.all.each do |post|
80
- post.comments.include?(comment)
81
- end
71
+ Post.all.each { |post| post.comments.include?(comment) }
82
72
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
83
73
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
84
74
 
@@ -86,9 +76,7 @@ if active_record?
86
76
  end
87
77
 
88
78
  it 'should not detect unused preload person => pets with empty?' do
89
- Person.all.each do |person|
90
- person.pets.empty?
91
- end
79
+ Person.all.each { |person| person.pets.empty? }
92
80
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
93
81
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
94
82
 
@@ -98,11 +86,7 @@ if active_record?
98
86
 
99
87
  context 'category => posts => comments' do
100
88
  it 'should detect non preload category => posts => comments' do
101
- Category.all.each do |category|
102
- category.posts.each do |post|
103
- post.comments.map(&:name)
104
- end
105
- end
89
+ Category.all.each { |category| category.posts.each { |post| post.comments.map(&:name) } }
106
90
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
107
91
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
108
92
 
@@ -111,11 +95,7 @@ if active_record?
111
95
  end
112
96
 
113
97
  it 'should detect preload category => posts, but no post => comments' do
114
- Category.includes(:posts).each do |category|
115
- category.posts.each do |post|
116
- post.comments.map(&:name)
117
- end
118
- end
98
+ Category.includes(:posts).each { |category| category.posts.each { |post| post.comments.map(&:name) } }
119
99
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
120
100
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
121
101
 
@@ -124,11 +104,7 @@ if active_record?
124
104
  end
125
105
 
126
106
  it 'should detect preload with category => posts => comments' do
127
- Category.includes(posts: :comments).each do |category|
128
- category.posts.each do |post|
129
- post.comments.map(&:name)
130
- end
131
- end
107
+ Category.includes(posts: :comments).each { |category| category.posts.each { |post| post.comments.map(&:name) } }
132
108
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
133
109
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
134
110
 
@@ -137,9 +113,7 @@ if active_record?
137
113
 
138
114
  it 'should detect preload with category => posts => comments with posts.id > 0' do
139
115
  Category.includes(posts: :comments).where('posts.id > 0').references(:posts).each do |category|
140
- category.posts.each do |post|
141
- post.comments.map(&:name)
142
- end
116
+ category.posts.each { |post| post.comments.map(&:name) }
143
117
  end
144
118
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
145
119
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
@@ -156,9 +130,7 @@ if active_record?
156
130
  end
157
131
 
158
132
  it 'should detect unused preload with post => commnets, no category => posts' do
159
- Category.includes(posts: :comments).each do |category|
160
- category.posts.map(&:name)
161
- end
133
+ Category.includes(posts: :comments).each { |category| category.posts.map(&:name) }
162
134
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
163
135
  expect(Bullet::Detector::Association).to be_unused_preload_associations_for(Post, :comments)
164
136
 
@@ -212,9 +184,7 @@ if active_record?
212
184
  end
213
185
 
214
186
  it 'should detect unused preload with category => entries, but not with category => posts' do
215
- Category.includes(%i[posts entries]).each do |category|
216
- category.posts.map(&:name)
217
- end
187
+ Category.includes(%i[posts entries]).each { |category| category.posts.map(&:name) }
218
188
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
219
189
  expect(Bullet::Detector::Association).not_to be_unused_preload_associations_for(Category, :posts)
220
190
  expect(Bullet::Detector::Association).to be_unused_preload_associations_for(Category, :entries)
@@ -225,9 +195,7 @@ if active_record?
225
195
 
226
196
  context 'post => comment' do
227
197
  it 'should detect unused preload with post => comments' do
228
- Post.includes(:comments).each do |post|
229
- post.comments.first&.name
230
- end
198
+ Post.includes(:comments).each { |post| post.comments.first&.name }
231
199
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
232
200
  expect(Bullet::Detector::Association).not_to be_unused_preload_associations_for(Post, :comments)
233
201
 
@@ -246,7 +214,7 @@ if active_record?
246
214
  category = Category.first
247
215
  category.draft_post.destroy!
248
216
  post = category.draft_post
249
- post.update_attributes!(link: true)
217
+ post.update!(link: true)
250
218
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
251
219
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
252
220
 
@@ -272,9 +240,7 @@ if active_record?
272
240
 
273
241
  context 'scope for_category_name' do
274
242
  it 'should detect preload with post => category' do
275
- Post.in_category_name('first').references(:categories).each do |post|
276
- post.category.name
277
- end
243
+ Post.in_category_name('first').references(:categories).each { |post| post.category.name }
278
244
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
279
245
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
280
246
 
@@ -292,9 +258,7 @@ if active_record?
292
258
 
293
259
  context 'scope preload_comments' do
294
260
  it 'should detect preload post => comments with scope' do
295
- Post.preload_comments.each do |post|
296
- post.comments.map(&:name)
297
- end
261
+ Post.preload_comments.each { |post| post.comments.map(&:name) }
298
262
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
299
263
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
300
264
 
@@ -314,9 +278,7 @@ if active_record?
314
278
  describe Bullet::Detector::Association, 'belongs_to' do
315
279
  context 'comment => post' do
316
280
  it 'should detect non preload with comment => post' do
317
- Comment.all.each do |comment|
318
- comment.post.name
319
- end
281
+ Comment.all.each { |comment| comment.post.name }
320
282
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
321
283
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
322
284
 
@@ -331,10 +293,8 @@ if active_record?
331
293
  expect(Bullet::Detector::Association).to be_completely_preloading_associations
332
294
  end
333
295
 
334
- it 'should dtect preload with comment => post' do
335
- Comment.includes(:post).each do |comment|
336
- comment.post.name
337
- end
296
+ it 'should detect preload with comment => post' do
297
+ Comment.includes(:post).each { |comment| comment.post.name }
338
298
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
339
299
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
340
300
 
@@ -362,29 +322,16 @@ if active_record?
362
322
 
363
323
  new_post.trigger_after_save = true
364
324
  new_post.save!
325
+ Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
365
326
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
366
327
 
367
328
  expect(Bullet::Detector::Association).to be_completely_preloading_associations
368
329
  end
369
-
370
- it 'should not detect "manual" preload' do
371
- comment = Comment.all.to_a.first
372
- post = Post.find(comment.post_id)
373
- # "manually" preload with out-of-band data
374
- comment.post = post
375
- # loading it should not trigger anything
376
- comment.post
377
-
378
- expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
379
- expect(Bullet::Detector::Association).to be_completely_preloading_associations
380
- end
381
330
  end
382
331
 
383
332
  context 'comment => post => category' do
384
333
  it 'should detect non preload association with comment => post' do
385
- Comment.all.each do |comment|
386
- comment.post.category.name
387
- end
334
+ Comment.all.each { |comment| comment.post.category.name }
388
335
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
389
336
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
390
337
 
@@ -401,9 +348,7 @@ if active_record?
401
348
  end
402
349
 
403
350
  it 'should detect non preload association with post => category' do
404
- Comment.includes(:post).each do |comment|
405
- comment.post.category.name
406
- end
351
+ Comment.includes(:post).each { |comment| comment.post.category.name }
407
352
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
408
353
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
409
354
 
@@ -411,9 +356,7 @@ if active_record?
411
356
  end
412
357
 
413
358
  it 'should not detect unpreload association' do
414
- Comment.includes(post: :category).each do |comment|
415
- comment.post.category.name
416
- end
359
+ Comment.includes(post: :category).each { |comment| comment.post.category.name }
417
360
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
418
361
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
419
362
 
@@ -423,9 +366,8 @@ if active_record?
423
366
 
424
367
  context 'comment => author, post => writer' do
425
368
  it 'should detect non preloaded writer' do
426
- Comment.includes(%i[author post]).where(['base_users.id = ?', BaseUser.first]).references(:base_users).each do |comment|
427
- comment.post.writer.name
428
- end
369
+ Comment.includes(%i[author post]).where(['base_users.id = ?', BaseUser.first]).references(:base_users)
370
+ .each { |comment| comment.post.writer.name }
429
371
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
430
372
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
431
373
 
@@ -433,9 +375,9 @@ if active_record?
433
375
  end
434
376
 
435
377
  it 'should detect unused preload with comment => author' do
436
- Comment.includes([:author, { post: :writer }]).where(['base_users.id = ?', BaseUser.first]).references(:base_users).each do |comment|
437
- comment.post.writer.name
438
- end
378
+ Comment.includes([:author, { post: :writer }]).where(['base_users.id = ?', BaseUser.first]).references(
379
+ :base_users
380
+ ).each { |comment| comment.post.writer.name }
439
381
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
440
382
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
441
383
 
@@ -453,11 +395,7 @@ if active_record?
453
395
  end
454
396
 
455
397
  it 'should not raise a stack error from posts to category' do
456
- expect {
457
- Comment.includes(post: :category).each do |com|
458
- com.post.category
459
- end
460
- }.not_to raise_error
398
+ expect { Comment.includes(post: :category).each { |com| com.post.category } }.not_to raise_error
461
399
  end
462
400
  end
463
401
  end
@@ -465,9 +403,7 @@ if active_record?
465
403
  describe Bullet::Detector::Association, 'has_and_belongs_to_many' do
466
404
  context 'students <=> teachers' do
467
405
  it 'should detect non preload associations' do
468
- Student.all.each do |student|
469
- student.teachers.map(&:name)
470
- end
406
+ Student.all.each { |student| student.teachers.map(&:name) }
471
407
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
472
408
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
473
409
 
@@ -475,9 +411,7 @@ if active_record?
475
411
  end
476
412
 
477
413
  it 'should detect preload associations' do
478
- Student.includes(:teachers).each do |student|
479
- student.teachers.map(&:name)
480
- end
414
+ Student.includes(:teachers).each { |student| student.teachers.map(&:name) }
481
415
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
482
416
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
483
417
 
@@ -501,9 +435,7 @@ if active_record?
501
435
  end
502
436
 
503
437
  it 'should detect non preload student => teachers with empty?' do
504
- Student.all.each do |student|
505
- student.teachers.empty?
506
- end
438
+ Student.all.each { |student| student.teachers.empty? }
507
439
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
508
440
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
509
441
 
@@ -515,9 +447,7 @@ if active_record?
515
447
  describe Bullet::Detector::Association, 'has_many :through' do
516
448
  context 'firm => clients' do
517
449
  it 'should detect non preload associations' do
518
- Firm.all.each do |firm|
519
- firm.clients.map(&:name)
520
- end
450
+ Firm.all.each { |firm| firm.clients.map(&:name) }
521
451
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
522
452
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
523
453
 
@@ -525,9 +455,7 @@ if active_record?
525
455
  end
526
456
 
527
457
  it 'should detect preload associations' do
528
- Firm.includes(:clients).each do |firm|
529
- firm.clients.map(&:name)
530
- end
458
+ Firm.includes(:clients).each { |firm| firm.clients.map(&:name) }
531
459
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
532
460
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
533
461
 
@@ -553,9 +481,7 @@ if active_record?
553
481
 
554
482
  context 'firm => clients => groups' do
555
483
  it 'should detect non preload associations' do
556
- Firm.all.each do |firm|
557
- firm.groups.map(&:name)
558
- end
484
+ Firm.all.each { |firm| firm.groups.map(&:name) }
559
485
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
560
486
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
561
487
 
@@ -563,9 +489,7 @@ if active_record?
563
489
  end
564
490
 
565
491
  it 'should detect preload associations' do
566
- Firm.includes(:groups).each do |firm|
567
- firm.groups.map(&:name)
568
- end
492
+ Firm.includes(:groups).each { |firm| firm.groups.map(&:name) }
569
493
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
570
494
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
571
495
 
@@ -593,9 +517,7 @@ if active_record?
593
517
  describe Bullet::Detector::Association, 'has_one' do
594
518
  context 'company => address' do
595
519
  it 'should detect non preload association' do
596
- Company.all.each do |company|
597
- company.address.name
598
- end
520
+ Company.all.each { |company| company.address.name }
599
521
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
600
522
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
601
523
 
@@ -603,9 +525,7 @@ if active_record?
603
525
  end
604
526
 
605
527
  it 'should detect preload association' do
606
- Company.includes(:address).each do |company|
607
- company.address.name
608
- end
528
+ Company.includes(:address).each { |company| company.address.name }
609
529
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
610
530
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
611
531
 
@@ -699,9 +619,7 @@ if active_record?
699
619
  describe Bullet::Detector::Association, 'STI' do
700
620
  context 'page => author' do
701
621
  it 'should detect non preload associations' do
702
- Page.all.each do |page|
703
- page.author.name
704
- end
622
+ Page.all.each { |page| page.author.name }
705
623
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
706
624
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
707
625
 
@@ -709,9 +627,7 @@ if active_record?
709
627
  end
710
628
 
711
629
  it 'should detect preload associations' do
712
- Page.includes(:author).each do |page|
713
- page.author.name
714
- end
630
+ Page.includes(:author).each { |page| page.author.name }
715
631
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
716
632
  expect(Bullet::Detector::Association).not_to be_has_unused_preload_associations
717
633
 
@@ -740,9 +656,7 @@ if active_record?
740
656
  after { Bullet.n_plus_one_query_enable = true }
741
657
 
742
658
  it 'should not detect n plus one query' do
743
- Post.all.each do |post|
744
- post.comments.map(&:name)
745
- end
659
+ Post.all.each { |post| post.comments.map(&:name) }
746
660
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
747
661
 
748
662
  expect(Bullet::Detector::Association).not_to be_detecting_unpreloaded_association_for(Post, :comments)
@@ -771,9 +685,7 @@ if active_record?
771
685
  end
772
686
 
773
687
  it 'should still detect n plus one query' do
774
- Post.all.each do |post|
775
- post.comments.map(&:name)
776
- end
688
+ Post.all.each { |post| post.comments.map(&:name) }
777
689
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
778
690
 
779
691
  expect(Bullet::Detector::Association).to be_detecting_unpreloaded_association_for(Post, :comments)
@@ -786,9 +698,7 @@ if active_record?
786
698
  after { Bullet.clear_whitelist }
787
699
 
788
700
  it 'should not detect n plus one query' do
789
- Post.all.each do |post|
790
- post.comments.map(&:name)
791
- end
701
+ Post.all.each { |post| post.comments.map(&:name) }
792
702
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
793
703
 
794
704
  expect(Bullet::Detector::Association).not_to be_detecting_unpreloaded_association_for(Post, :comments)
@@ -817,9 +727,7 @@ if active_record?
817
727
  end
818
728
 
819
729
  it 'should still detect n plus one query' do
820
- Post.all.each do |post|
821
- post.comments.map(&:name)
822
- end
730
+ Post.all.each { |post| post.comments.map(&:name) }
823
731
  Bullet::Detector::UnusedEagerLoading.check_unused_preload_associations
824
732
 
825
733
  expect(Bullet::Detector::Association).to be_detecting_unpreloaded_association_for(Post, :comments)