bullet 5.7.0 → 6.0.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 (114) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +2 -0
  3. data/CHANGELOG.md +27 -1
  4. data/Gemfile.mongoid-7.0 +15 -0
  5. data/Gemfile.rails-4.0 +1 -1
  6. data/Gemfile.rails-4.1 +1 -1
  7. data/Gemfile.rails-4.2 +1 -1
  8. data/Gemfile.rails-5.0 +1 -1
  9. data/Gemfile.rails-5.1 +1 -1
  10. data/Gemfile.rails-5.2 +2 -2
  11. data/Gemfile.rails-6.0 +15 -0
  12. data/Guardfile +1 -1
  13. data/README.md +10 -5
  14. data/Rakefile +5 -5
  15. data/bullet.gemspec +12 -6
  16. data/lib/bullet/active_record4.rb +10 -14
  17. data/lib/bullet/active_record41.rb +8 -14
  18. data/lib/bullet/active_record42.rb +16 -22
  19. data/lib/bullet/active_record5.rb +69 -49
  20. data/lib/bullet/active_record52.rb +40 -40
  21. data/lib/bullet/active_record60.rb +245 -0
  22. data/lib/bullet/bullet_xhr.js +58 -0
  23. data/lib/bullet/dependency.rb +19 -5
  24. data/lib/bullet/detector/association.rb +18 -16
  25. data/lib/bullet/detector/base.rb +2 -0
  26. data/lib/bullet/detector/counter_cache.rb +13 -10
  27. data/lib/bullet/detector/n_plus_one_query.rb +21 -19
  28. data/lib/bullet/detector/unused_eager_loading.rb +27 -22
  29. data/lib/bullet/detector.rb +2 -0
  30. data/lib/bullet/ext/object.rb +9 -5
  31. data/lib/bullet/ext/string.rb +3 -1
  32. data/lib/bullet/mongoid4x.rb +7 -2
  33. data/lib/bullet/mongoid5x.rb +7 -2
  34. data/lib/bullet/mongoid6x.rb +11 -6
  35. data/lib/bullet/mongoid7x.rb +61 -0
  36. data/lib/bullet/notification/base.rb +21 -15
  37. data/lib/bullet/notification/counter_cache.rb +2 -0
  38. data/lib/bullet/notification/n_plus_one_query.rb +6 -4
  39. data/lib/bullet/notification/unused_eager_loading.rb +6 -4
  40. data/lib/bullet/notification.rb +2 -0
  41. data/lib/bullet/notification_collector.rb +2 -1
  42. data/lib/bullet/rack.rb +52 -31
  43. data/lib/bullet/registry/association.rb +2 -0
  44. data/lib/bullet/registry/base.rb +2 -0
  45. data/lib/bullet/registry/object.rb +2 -0
  46. data/lib/bullet/registry.rb +2 -0
  47. data/lib/bullet/stack_trace_filter.rb +57 -21
  48. data/lib/bullet/version.rb +2 -1
  49. data/lib/bullet.rb +48 -31
  50. data/lib/generators/bullet/install_generator.rb +5 -3
  51. data/perf/benchmark.rb +9 -7
  52. data/rails/init.rb +2 -0
  53. data/spec/bullet/detector/association_spec.rb +2 -0
  54. data/spec/bullet/detector/base_spec.rb +2 -0
  55. data/spec/bullet/detector/counter_cache_spec.rb +2 -0
  56. data/spec/bullet/detector/n_plus_one_query_spec.rb +33 -8
  57. data/spec/bullet/detector/unused_eager_loading_spec.rb +2 -0
  58. data/spec/bullet/ext/object_spec.rb +12 -5
  59. data/spec/bullet/ext/string_spec.rb +2 -0
  60. data/spec/bullet/notification/base_spec.rb +8 -6
  61. data/spec/bullet/notification/counter_cache_spec.rb +3 -1
  62. data/spec/bullet/notification/n_plus_one_query_spec.rb +3 -1
  63. data/spec/bullet/notification/unused_eager_loading_spec.rb +3 -1
  64. data/spec/bullet/notification_collector_spec.rb +2 -0
  65. data/spec/bullet/rack_spec.rb +22 -12
  66. data/spec/bullet/registry/association_spec.rb +4 -2
  67. data/spec/bullet/registry/base_spec.rb +5 -3
  68. data/spec/bullet/registry/object_spec.rb +2 -0
  69. data/spec/bullet_spec.rb +9 -7
  70. data/spec/integration/active_record/association_spec.rb +70 -19
  71. data/spec/integration/counter_cache_spec.rb +5 -3
  72. data/spec/integration/mongoid/association_spec.rb +2 -0
  73. data/spec/models/address.rb +2 -0
  74. data/spec/models/author.rb +2 -0
  75. data/spec/models/base_user.rb +2 -0
  76. data/spec/models/category.rb +2 -0
  77. data/spec/models/city.rb +2 -0
  78. data/spec/models/client.rb +4 -0
  79. data/spec/models/comment.rb +2 -0
  80. data/spec/models/company.rb +2 -0
  81. data/spec/models/country.rb +2 -0
  82. data/spec/models/document.rb +2 -0
  83. data/spec/models/entry.rb +2 -0
  84. data/spec/models/firm.rb +3 -0
  85. data/spec/models/folder.rb +2 -0
  86. data/spec/models/group.rb +4 -0
  87. data/spec/models/mongoid/address.rb +3 -1
  88. data/spec/models/mongoid/category.rb +4 -2
  89. data/spec/models/mongoid/comment.rb +3 -1
  90. data/spec/models/mongoid/company.rb +3 -1
  91. data/spec/models/mongoid/entry.rb +3 -1
  92. data/spec/models/mongoid/post.rb +6 -4
  93. data/spec/models/mongoid/user.rb +2 -0
  94. data/spec/models/newspaper.rb +2 -0
  95. data/spec/models/page.rb +2 -0
  96. data/spec/models/person.rb +2 -0
  97. data/spec/models/pet.rb +2 -0
  98. data/spec/models/post.rb +17 -0
  99. data/spec/models/relationship.rb +2 -0
  100. data/spec/models/reply.rb +2 -0
  101. data/spec/models/student.rb +2 -0
  102. data/spec/models/submission.rb +2 -0
  103. data/spec/models/teacher.rb +2 -0
  104. data/spec/models/user.rb +2 -0
  105. data/spec/models/writer.rb +2 -0
  106. data/spec/spec_helper.rb +3 -1
  107. data/spec/support/bullet_ext.rb +2 -0
  108. data/spec/support/mongo_seed.rb +32 -30
  109. data/spec/support/rack_double.rb +9 -16
  110. data/spec/support/sqlite_seed.rb +84 -75
  111. data/tasks/bullet_tasks.rake +2 -0
  112. data/test.sh +2 -0
  113. data/update.sh +1 -0
  114. metadata +17 -9
@@ -1,35 +1,39 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Support
2
4
  module MongoSeed
5
+ module_function
6
+
3
7
  def seed_db
4
- category1 = Mongoid::Category.create(:name => 'first')
5
- category2 = Mongoid::Category.create(:name => 'second')
8
+ category1 = Mongoid::Category.create(name: 'first')
9
+ category2 = Mongoid::Category.create(name: 'second')
6
10
 
7
- post1 = category1.posts.create(:name => 'first')
8
- post1a = category1.posts.create(:name => 'like first')
9
- post2 = category2.posts.create(:name => 'second')
11
+ post1 = category1.posts.create(name: 'first')
12
+ post1a = category1.posts.create(name: 'like first')
13
+ post2 = category2.posts.create(name: 'second')
10
14
 
11
- post1.users << Mongoid::User.create(:name => 'first')
12
- post1.users << Mongoid::User.create(:name => 'another')
13
- post2.users << Mongoid::User.create(:name => 'second')
15
+ post1.users << Mongoid::User.create(name: 'first')
16
+ post1.users << Mongoid::User.create(name: 'another')
17
+ post2.users << Mongoid::User.create(name: 'second')
14
18
 
15
- comment1 = post1.comments.create(:name => 'first')
16
- comment2 = post1.comments.create(:name => 'first2')
17
- comment3 = post1.comments.create(:name => 'first3')
18
- comment4 = post1.comments.create(:name => 'second')
19
- comment8 = post1a.comments.create(:name => 'like first 1')
20
- comment9 = post1a.comments.create(:name => 'like first 2')
21
- comment5 = post2.comments.create(:name => 'third')
22
- comment6 = post2.comments.create(:name => 'fourth')
23
- comment7 = post2.comments.create(:name => 'fourth')
19
+ comment1 = post1.comments.create(name: 'first')
20
+ comment2 = post1.comments.create(name: 'first2')
21
+ comment3 = post1.comments.create(name: 'first3')
22
+ comment4 = post1.comments.create(name: 'second')
23
+ comment8 = post1a.comments.create(name: 'like first 1')
24
+ comment9 = post1a.comments.create(name: 'like first 2')
25
+ comment5 = post2.comments.create(name: 'third')
26
+ comment6 = post2.comments.create(name: 'fourth')
27
+ comment7 = post2.comments.create(name: 'fourth')
24
28
 
25
- entry1 = category1.entries.create(:name => 'first')
26
- entry2 = category1.entries.create(:name => 'second')
29
+ entry1 = category1.entries.create(name: 'first')
30
+ entry2 = category1.entries.create(name: 'second')
27
31
 
28
- company1 = Mongoid::Company.create(:name => 'first')
29
- company2 = Mongoid::Company.create(:name => 'second')
32
+ company1 = Mongoid::Company.create(name: 'first')
33
+ company2 = Mongoid::Company.create(name: 'second')
30
34
 
31
- Mongoid::Address.create(:name => 'first', :company => company1)
32
- Mongoid::Address.create(:name => 'second', :company => company2)
35
+ Mongoid::Address.create(name: 'first', company: company1)
36
+ Mongoid::Address.create(name: 'second', company: company2)
33
37
  end
34
38
 
35
39
  def setup_db
@@ -47,12 +51,12 @@ module Support
47
51
  else
48
52
  Mongoid.configure do |config|
49
53
  config.load_configuration(
50
- clients: {
51
- default: {
52
- database: 'bullet',
53
- hosts: ['localhost:27017']
54
- }
54
+ clients: {
55
+ default: {
56
+ database: 'bullet',
57
+ hosts: ['localhost:27017']
55
58
  }
59
+ }
56
60
  )
57
61
  end
58
62
  # Increase the level from DEBUG in order to avoid excessive logging to the screen
@@ -64,7 +68,5 @@ module Support
64
68
  Mongoid.purge!
65
69
  Mongoid::IdentityMap.clear if Mongoid.const_defined?(:IdentityMap)
66
70
  end
67
-
68
- extend self
69
71
  end
70
72
  end
@@ -1,26 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Support
2
4
  class AppDouble
3
- def call env
5
+ def call(_env)
4
6
  env = @env
5
7
  [status, headers, response]
6
8
  end
7
9
 
8
- def status= status
9
- @status = status
10
- end
10
+ attr_writer :status
11
11
 
12
- def headers= headers
13
- @headers = headers
14
- end
12
+ attr_writer :headers
15
13
 
16
14
  def headers
17
15
  @headers ||= { 'Content-Type' => 'text/html' }
18
16
  @headers
19
17
  end
20
18
 
21
- def response= response
22
- @response = response
23
- end
19
+ attr_writer :response
24
20
 
25
21
  private
26
22
 
@@ -34,7 +30,7 @@ module Support
34
30
  end
35
31
 
36
32
  class ResponseDouble
37
- def initialize actual_body = nil
33
+ def initialize(actual_body = nil)
38
34
  @actual_body = actual_body
39
35
  end
40
36
 
@@ -42,15 +38,12 @@ module Support
42
38
  @body ||= '<html><head></head><body></body></html>'
43
39
  end
44
40
 
45
- def body= body
46
- @body = body
47
- end
41
+ attr_writer :body
48
42
 
49
43
  def each
50
44
  yield body
51
45
  end
52
46
 
53
- def close
54
- end
47
+ def close; end
55
48
  end
56
49
  end
@@ -1,100 +1,106 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Support
2
4
  module SqliteSeed
5
+ module_function
6
+
3
7
  def seed_db
4
- newspaper1 = Newspaper.create(:name => 'First Newspaper')
5
- newspaper2 = Newspaper.create(:name => 'Second Newspaper')
6
-
7
- writer1 = Writer.create(:name => 'first', :newspaper => newspaper1)
8
- writer2 = Writer.create(:name => 'second', :newspaper => newspaper2)
9
- user1 = BaseUser.create(:name => 'third', :newspaper => newspaper1)
10
- user2 = BaseUser.create(:name => 'fourth', :newspaper => newspaper2)
11
-
12
- category1 = Category.create(:name => 'first')
13
- category2 = Category.create(:name => 'second')
14
-
15
- post1 = category1.posts.create(:name => 'first', :writer => writer1)
16
- post1a = category1.posts.create(:name => 'like first', :writer => writer2, active: false)
17
- post2 = category2.posts.create(:name => 'second', :writer => writer2)
18
- post3 = category2.posts.create(:name => 'third', :writer => writer2)
19
-
20
- comment1 = post1.comments.create(:name => 'first', :author => writer1)
21
- comment2 = post1.comments.create(:name => 'first2', :author => writer1)
22
- comment3 = post1.comments.create(:name => 'first3', :author => writer1)
23
- comment4 = post1.comments.create(:name => 'second', :author => writer2)
24
- comment8 = post1a.comments.create(:name => 'like first 1', :author => writer1)
25
- comment9 = post1a.comments.create(:name => 'like first 2', :author => writer2)
26
- comment5 = post2.comments.create(:name => 'third', :author => user1)
27
- comment6 = post2.comments.create(:name => 'fourth', :author => user2)
28
- comment7 = post2.comments.create(:name => 'fourth', :author => writer1)
29
-
30
- entry1 = category1.entries.create(:name => 'first')
31
- entry2 = category1.entries.create(:name => 'second')
32
-
33
- student1 = Student.create(:name => 'first')
34
- student2 = Student.create(:name => 'second')
35
- teacher1 = Teacher.create(:name => 'first')
36
- teacher2 = Teacher.create(:name => 'second')
8
+ newspaper1 = Newspaper.create(name: 'First Newspaper')
9
+ newspaper2 = Newspaper.create(name: 'Second Newspaper')
10
+
11
+ writer1 = Writer.create(name: 'first', newspaper: newspaper1)
12
+ writer2 = Writer.create(name: 'second', newspaper: newspaper2)
13
+ user1 = BaseUser.create(name: 'third', newspaper: newspaper1)
14
+ user2 = BaseUser.create(name: 'fourth', newspaper: newspaper2)
15
+
16
+ category1 = Category.create(name: 'first')
17
+ category2 = Category.create(name: 'second')
18
+
19
+ post1 = category1.posts.create(name: 'first', writer: writer1)
20
+ post1a = category1.posts.create(name: 'like first', writer: writer2, active: false)
21
+ post2 = category2.posts.create(name: 'second', writer: writer2)
22
+ post3 = category2.posts.create(name: 'third', writer: writer2)
23
+
24
+ comment1 = post1.comments.create(name: 'first', author: writer1)
25
+ comment2 = post1.comments.create(name: 'first2', author: writer1)
26
+ comment3 = post1.comments.create(name: 'first3', author: writer1)
27
+ comment4 = post1.comments.create(name: 'second', author: writer2)
28
+ comment8 = post1a.comments.create(name: 'like first 1', author: writer1)
29
+ comment9 = post1a.comments.create(name: 'like first 2', author: writer2)
30
+ comment5 = post2.comments.create(name: 'third', author: user1)
31
+ comment6 = post2.comments.create(name: 'fourth', author: user2)
32
+ comment7 = post2.comments.create(name: 'fourth', author: writer1)
33
+
34
+ entry1 = category1.entries.create(name: 'first')
35
+ entry2 = category1.entries.create(name: 'second')
36
+
37
+ student1 = Student.create(name: 'first')
38
+ student2 = Student.create(name: 'second')
39
+ teacher1 = Teacher.create(name: 'first')
40
+ teacher2 = Teacher.create(name: 'second')
37
41
  student1.teachers = [teacher1, teacher2]
38
42
  student2.teachers = [teacher1, teacher2]
39
43
  teacher1.students << student1
40
44
  teacher2.students << student2
41
45
 
42
- firm1 = Firm.create(:name => 'first')
43
- firm2 = Firm.create(:name => 'second')
44
- client1 = Client.create(:name => 'first')
45
- client2 = Client.create(:name => 'second')
46
+ firm1 = Firm.create(name: 'first')
47
+ firm2 = Firm.create(name: 'second')
48
+ group1 = Group.create(name: 'first')
49
+ group2 = Group.create(name: 'second')
50
+ client1 = Client.create(name: 'first', group: group1)
51
+ client2 = Client.create(name: 'second', group: group2)
46
52
  firm1.clients = [client1, client2]
47
53
  firm2.clients = [client1, client2]
48
54
  client1.firms << firm1
49
55
  client2.firms << firm2
50
56
 
51
- company1 = Company.create(:name => 'first')
52
- company2 = Company.create(:name => 'second')
57
+ company1 = Company.create(name: 'first')
58
+ company2 = Company.create(name: 'second')
53
59
 
54
- Address.create(:name => 'first', :company => company1)
55
- Address.create(:name => 'second', :company => company2)
60
+ Address.create(name: 'first', company: company1)
61
+ Address.create(name: 'second', company: company2)
56
62
 
57
- country1 = Country.create(:name => 'first')
58
- country2 = Country.create(:name => 'second')
63
+ country1 = Country.create(name: 'first')
64
+ country2 = Country.create(name: 'second')
59
65
 
60
- country1.cities.create(:name => 'first')
61
- country1.cities.create(:name => 'second')
62
- country2.cities.create(:name => 'third')
63
- country2.cities.create(:name => 'fourth')
66
+ country1.cities.create(name: 'first')
67
+ country1.cities.create(name: 'second')
68
+ country2.cities.create(name: 'third')
69
+ country2.cities.create(name: 'fourth')
64
70
 
65
- person1 = Person.create(:name => 'first')
66
- person2 = Person.create(:name => 'second')
71
+ person1 = Person.create(name: 'first')
72
+ person2 = Person.create(name: 'second')
67
73
 
68
- person1.pets.create(:name => 'first')
69
- person1.pets.create(:name => 'second')
70
- person2.pets.create(:name => 'third')
71
- person2.pets.create(:name => 'fourth')
74
+ person1.pets.create(name: 'first')
75
+ person1.pets.create(name: 'second')
76
+ person2.pets.create(name: 'third')
77
+ person2.pets.create(name: 'fourth')
72
78
 
73
- author1 = Author.create(:name => 'author1')
74
- author2 = Author.create(:name => 'author2')
75
- folder1 = Folder.create(:name => 'folder1', :author_id => author1.id)
76
- folder2 = Folder.create(:name => 'folder2', :author_id => author2.id)
77
- page1 = Page.create(:name => 'page1', :parent_id => folder1.id, :author_id => author1.id)
78
- page2 = Page.create(:name => 'page2', :parent_id => folder1.id, :author_id => author1.id)
79
- page3 = Page.create(:name => 'page3', :parent_id => folder2.id, :author_id => author2.id)
80
- page4 = Page.create(:name => 'page4', :parent_id => folder2.id, :author_id => author2.id)
79
+ author1 = Author.create(name: 'author1')
80
+ author2 = Author.create(name: 'author2')
81
+ folder1 = Folder.create(name: 'folder1', author_id: author1.id)
82
+ folder2 = Folder.create(name: 'folder2', author_id: author2.id)
83
+ page1 = Page.create(name: 'page1', parent_id: folder1.id, author_id: author1.id)
84
+ page2 = Page.create(name: 'page2', parent_id: folder1.id, author_id: author1.id)
85
+ page3 = Page.create(name: 'page3', parent_id: folder2.id, author_id: author2.id)
86
+ page4 = Page.create(name: 'page4', parent_id: folder2.id, author_id: author2.id)
81
87
 
82
- user1 = User.create(:name => 'user1', :category => category1)
83
- user2 = User.create(:name => 'user2', :category => category1)
88
+ user1 = User.create(name: 'user1', category: category1)
89
+ user2 = User.create(name: 'user2', category: category1)
84
90
 
85
- submission1 = user1.create_submission(:name => 'submission1')
86
- submission2 = user2.create_submission(:name => 'submission2')
91
+ submission1 = user1.create_submission(name: 'submission1')
92
+ submission2 = user2.create_submission(name: 'submission2')
87
93
 
88
- submission1.replies.create(:name => 'reply1')
89
- submission1.replies.create(:name => 'reply2')
90
- submission2.replies.create(:name => 'reply3')
91
- submission2.replies.create(:name => 'reply4')
94
+ submission1.replies.create(name: 'reply1')
95
+ submission1.replies.create(name: 'reply2')
96
+ submission2.replies.create(name: 'reply3')
97
+ submission2.replies.create(name: 'reply4')
92
98
  end
93
99
 
94
100
  def setup_db
95
- ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
101
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
96
102
 
97
- ActiveRecord::Schema.define(:version => 1) do
103
+ ActiveRecord::Schema.define(version: 1) do
98
104
  create_table :addresses do |t|
99
105
  t.column :name, :string
100
106
  t.column :company_id, :integer
@@ -121,6 +127,7 @@ module Support
121
127
 
122
128
  create_table :clients do |t|
123
129
  t.column :name, :string
130
+ t.column :group_id, :integer
124
131
  end
125
132
 
126
133
  create_table :comments do |t|
@@ -167,6 +174,10 @@ module Support
167
174
  t.column :name, :string
168
175
  end
169
176
 
177
+ create_table :groups do |t|
178
+ t.column :name, :string
179
+ end
180
+
170
181
  create_table :hotels do |t|
171
182
  t.column :name, :string
172
183
  t.column :location_id, :integer
@@ -194,7 +205,7 @@ module Support
194
205
  t.column :name, :string
195
206
  t.column :category_id, :integer
196
207
  t.column :writer_id, :integer
197
- t.column :active, :boolean, :default => true
208
+ t.column :active, :boolean, default: true
198
209
  end
199
210
 
200
211
  create_table :relationships do |t|
@@ -206,7 +217,7 @@ module Support
206
217
  t.column :name, :string
207
218
  end
208
219
 
209
- create_table :students_teachers, :id => false do |t|
220
+ create_table :students_teachers, id: false do |t|
210
221
  t.column :student_id, :integer
211
222
  t.column :teacher_id, :integer
212
223
  end
@@ -231,7 +242,5 @@ module Support
231
242
  end
232
243
  end
233
244
  end
234
-
235
- extend self
236
245
  end
237
246
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  namespace :bullet do
2
4
  namespace :log do
3
5
  desc 'Truncates the bullet log file to zero bytes'
data/test.sh CHANGED
@@ -1,11 +1,13 @@
1
1
  #bundle update rails && bundle exec rspec spec
2
2
  #BUNDLE_GEMFILE=Gemfile.mongoid bundle update mongoid && BUNDLE_GEMFILE=Gemfile.mongoid bundle exec rspec spec
3
+ BUNDLE_GEMFILE=Gemfile.rails-6.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-6.0 bundle exec rspec spec
3
4
  BUNDLE_GEMFILE=Gemfile.rails-5.2 bundle && BUNDLE_GEMFILE=Gemfile.rails-5.2 bundle exec rspec spec
4
5
  BUNDLE_GEMFILE=Gemfile.rails-5.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-5.1 bundle exec rspec spec
5
6
  BUNDLE_GEMFILE=Gemfile.rails-5.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-5.0 bundle exec rspec spec
6
7
  BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle exec rspec spec
7
8
  BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle exec rspec spec
8
9
  BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle exec rspec spec
10
+ BUNDLE_GEMFILE=Gemfile.mongoid-7.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-7.0 bundle exec rspec spec
9
11
  BUNDLE_GEMFILE=Gemfile.mongoid-6.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-6.0 bundle exec rspec spec
10
12
  BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle exec rspec spec
11
13
  BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle exec rspec spec
data/update.sh CHANGED
@@ -4,6 +4,7 @@ BUNDLE_GEMFILE=Gemfile.rails-5.0 bundle update
4
4
  BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle update
5
5
  BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle update
6
6
  BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle update
7
+ BUNDLE_GEMFILE=Gemfile.mongoid-7.0 bundle update
7
8
  BUNDLE_GEMFILE=Gemfile.mongoid-6.0 bundle update
8
9
  BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle update
9
10
  BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle update
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-03 00:00:00.000000000 Z
11
+ date: 2019-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.10.0
33
+ version: '1.11'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.10.0
40
+ version: '1.11'
41
41
  description: help to kill N+1 queries and unused eager loading.
42
42
  email:
43
43
  - flyerhzm@gmail.com
@@ -54,12 +54,14 @@ files:
54
54
  - Gemfile.mongoid-4.0
55
55
  - Gemfile.mongoid-5.0
56
56
  - Gemfile.mongoid-6.0
57
+ - Gemfile.mongoid-7.0
57
58
  - Gemfile.rails-4.0
58
59
  - Gemfile.rails-4.1
59
60
  - Gemfile.rails-4.2
60
61
  - Gemfile.rails-5.0
61
62
  - Gemfile.rails-5.1
62
63
  - Gemfile.rails-5.2
64
+ - Gemfile.rails-6.0
63
65
  - Guardfile
64
66
  - Hacking.md
65
67
  - MIT-LICENSE
@@ -72,6 +74,8 @@ files:
72
74
  - lib/bullet/active_record42.rb
73
75
  - lib/bullet/active_record5.rb
74
76
  - lib/bullet/active_record52.rb
77
+ - lib/bullet/active_record60.rb
78
+ - lib/bullet/bullet_xhr.js
75
79
  - lib/bullet/dependency.rb
76
80
  - lib/bullet/detector.rb
77
81
  - lib/bullet/detector/association.rb
@@ -84,6 +88,7 @@ files:
84
88
  - lib/bullet/mongoid4x.rb
85
89
  - lib/bullet/mongoid5x.rb
86
90
  - lib/bullet/mongoid6x.rb
91
+ - lib/bullet/mongoid7x.rb
87
92
  - lib/bullet/notification.rb
88
93
  - lib/bullet/notification/base.rb
89
94
  - lib/bullet/notification/counter_cache.rb
@@ -133,6 +138,7 @@ files:
133
138
  - spec/models/entry.rb
134
139
  - spec/models/firm.rb
135
140
  - spec/models/folder.rb
141
+ - spec/models/group.rb
136
142
  - spec/models/mongoid/address.rb
137
143
  - spec/models/mongoid/category.rb
138
144
  - spec/models/mongoid/comment.rb
@@ -160,10 +166,12 @@ files:
160
166
  - tasks/bullet_tasks.rake
161
167
  - test.sh
162
168
  - update.sh
163
- homepage: http://github.com/flyerhzm/bullet
169
+ homepage: https://github.com/flyerhzm/bullet
164
170
  licenses:
165
171
  - MIT
166
- metadata: {}
172
+ metadata:
173
+ changelog_uri: https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md
174
+ source_code_uri: https://github.com/flyerhzm/bullet
167
175
  post_install_message:
168
176
  rdoc_options: []
169
177
  require_paths:
@@ -172,15 +180,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
180
  requirements:
173
181
  - - ">="
174
182
  - !ruby/object:Gem::Version
175
- version: '0'
183
+ version: '2.3'
176
184
  required_rubygems_version: !ruby/object:Gem::Requirement
177
185
  requirements:
178
186
  - - ">="
179
187
  - !ruby/object:Gem::Version
180
188
  version: 1.3.6
181
189
  requirements: []
182
- rubyforge_project:
183
- rubygems_version: 2.6.13
190
+ rubygems_version: 3.0.3
184
191
  signing_key:
185
192
  specification_version: 4
186
193
  summary: help to kill N+1 queries and unused eager loading.
@@ -218,6 +225,7 @@ test_files:
218
225
  - spec/models/entry.rb
219
226
  - spec/models/firm.rb
220
227
  - spec/models/folder.rb
228
+ - spec/models/group.rb
221
229
  - spec/models/mongoid/address.rb
222
230
  - spec/models/mongoid/category.rb
223
231
  - spec/models/mongoid/comment.rb