bullet 7.0.1 → 7.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 823bcc1af2be934ec4f10df71ea2951223834d3146e9c323afada99ba4ae4254
4
- data.tar.gz: 4cda048b45bd219d62bee22e0041027561c943d283ee262ea71686a15e6e4345
3
+ metadata.gz: ad1f81292cc89778a41c6dd178bbfb6342fe1b69c4e57c3fdad0d8003d97b525
4
+ data.tar.gz: 5c1c8113f6e03ecdb449bce5e12273b969f29c323a5bb802c13c0539ea439a69
5
5
  SHA512:
6
- metadata.gz: 9a2398eb23da7201bb8ab3fb1dbea3d48089d6c51d4a0e473d25009841aab41c68a5b0c27fb6ac6b77084e2465a836a5b848ffda63a2ea3b457a9571b04d428f
7
- data.tar.gz: ab3debd03dc9cafbbd8ef9237f747c67d14bf3d8bf116b7dbed4e145176cf3f10045862b32641036e9bb00caca6eee841c75f9b3defad83ca681d0d70a5c6f0d
6
+ metadata.gz: 1f0d4d73910f96ab8c6ae5b6b1bc58de547c2c32a7c689c2984778465dae29d2c2cae81c23699b3848d2eaef30223db66bcca6ccb421b9078d5616f497421d45
7
+ data.tar.gz: 3b9001966918da22bfe7b2960526ac0db471a75e79e7939b099bebe3dde1fb27ea69b1afbdec0fcc98a6cb4260b845b5551a1a07cec036207c885be4e14ef7b9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## Next Release
2
2
 
3
+ ## 7.0.3 (08/13/2022)
4
+
5
+ * Replace `Array()` with `Array.wrap()`
6
+
7
+ ## 7.0.2 (05/31/2022)
8
+
9
+ * Drop growl support
10
+ * Do not check html tag in Bullet::Rack anymore
11
+
3
12
  ## 7.0.1 (01/15/2022)
4
13
 
5
14
  * Get rid of *_whitelist methods
data/README.md CHANGED
@@ -49,7 +49,7 @@ mongoid.
49
49
 
50
50
  ## Configuration
51
51
 
52
- Bullet won't do ANYTHING unless you tell it to explicitly. Append to
52
+ Bullet won't enable any notification systems unless you tell it to explicitly. Append to
53
53
  `config/environments/development.rb` initializer with the following code:
54
54
 
55
55
  ```ruby
@@ -59,7 +59,6 @@ config.after_initialize do
59
59
  Bullet.alert = true
60
60
  Bullet.bullet_logger = true
61
61
  Bullet.console = true
62
- Bullet.growl = true
63
62
  Bullet.xmpp = { :account => 'bullets_account@jabber.org',
64
63
  :password => 'bullets_password_for_jabber',
65
64
  :receiver => 'your_account@jabber.org',
@@ -85,7 +84,6 @@ The code above will enable all of the Bullet notification systems:
85
84
  * `Bullet.alert`: pop up a JavaScript alert in the browser
86
85
  * `Bullet.bullet_logger`: log to the Bullet log file (Rails.root/log/bullet.log)
87
86
  * `Bullet.console`: log warnings to your browser's console.log (Safari/Webkit browsers or Firefox w/Firebug installed)
88
- * `Bullet.growl`: pop up Growl warnings if your system has Growl installed. Requires a little bit of configuration
89
87
  * `Bullet.xmpp`: send XMPP/Jabber notifications to the receiver indicated. Note that the code will currently not handle the adding of contacts, so you will need to make both accounts indicated know each other manually before you will receive any notifications. If you restart the development server frequently, the 'coming online' sound for the Bullet account may start to annoy - in this case set :show_online_status to false; you will still get notifications, but the Bullet account won't announce it's online status anymore.
90
88
  * `Bullet.rails_logger`: add warnings directly to the Rails log
91
89
  * `Bullet.honeybadger`: add notifications to Honeybadger
@@ -156,25 +154,26 @@ The Bullet log `log/bullet.log` will look something like this:
156
154
  * N+1 Query:
157
155
 
158
156
  ```
159
- 2009-08-25 20:40:17[INFO] N+1 Query: PATH_INFO: /posts; model: Post => associations: [comments]·
160
- Add to your finder: :include => [:comments]
161
- 2009-08-25 20:40:17[INFO] N+1 Query: method call stack:·
162
- /Users/richard/Downloads/test/app/views/posts/index.html.erb:11:in `_run_erb_app47views47posts47index46html46erb'
163
- /Users/richard/Downloads/test/app/views/posts/index.html.erb:8:in `each'
164
- /Users/richard/Downloads/test/app/views/posts/index.html.erb:8:in `_run_erb_app47views47posts47index46html46erb'
165
- /Users/richard/Downloads/test/app/controllers/posts_controller.rb:7:in `index'
157
+ 2009-08-25 20:40:17[INFO] USE eager loading detected:
158
+ Post => [:comments]·
159
+ Add to your query: .includes([:comments])
160
+ 2009-08-25 20:40:17[INFO] Call stack
161
+ /Users/richard/Downloads/test/app/views/posts/index.html.erb:8:in `each'
162
+ /Users/richard/Downloads/test/app/controllers/posts_controller.rb:7:in `index'
166
163
  ```
167
164
 
168
- The first two lines are notifications that N+1 queries have been encountered. The remaining lines are stack traces so you can find exactly where the queries were invoked in your code, and fix them.
165
+ The first log entry is a notification that N+1 queries have been encountered. The remaining entry is a stack trace so you can find exactly where the queries were invoked in your code, and fix them.
169
166
 
170
167
  * Unused eager loading:
171
168
 
172
169
  ```
173
- 2009-08-25 20:53:56[INFO] Unused eager loadings: PATH_INFO: /posts; model: Post => associations: [comments]·
174
- Remove from your finder: :include => [:comments]
170
+ 2009-08-25 20:53:56[INFO] AVOID eager loading detected
171
+ Post => [:comments]·
172
+ Remove from your query: .includes([:comments])
173
+ 2009-08-25 20:53:56[INFO] Call stack
175
174
  ```
176
175
 
177
- These two lines are notifications that unused eager loadings have been encountered.
176
+ These lines are notifications that unused eager loadings have been encountered.
178
177
 
179
178
  * Need counter cache:
180
179
 
@@ -183,10 +182,14 @@ These two lines are notifications that unused eager loadings have been encounter
183
182
  Post => [:comments]
184
183
  ```
185
184
 
186
- ## Growl, XMPP/Jabber and Airbrake Support
185
+ ## XMPP/Jabber and Airbrake Support
187
186
 
188
187
  see [https://github.com/flyerhzm/uniform_notifier](https://github.com/flyerhzm/uniform_notifier)
189
188
 
189
+ ## Growl Support
190
+
191
+ Growl support is dropped from uniform_notifier 1.16.0, if you still want it, please use uniform_notifier 1.15.0.
192
+
190
193
  ## Important
191
194
 
192
195
  If you find Bullet does not work for you, *please disable your browser's cache*.
@@ -179,7 +179,7 @@ module Bullet
179
179
  refl = reflection.through_reflection
180
180
  Bullet::Detector::NPlusOneQuery.call_association(owner, refl.name)
181
181
  association = owner.association refl.name
182
- Array(association.target).each do |through_record|
182
+ Array.wrap(association.target).each do |through_record|
183
183
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
184
184
  end
185
185
 
@@ -152,7 +152,7 @@ module Bullet
152
152
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
153
153
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
154
154
  association = owner.association reflection.through_reflection.name
155
- Array(association.target).each do |through_record|
155
+ Array.wrap(association.target).each do |through_record|
156
156
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
157
157
  end
158
158
 
@@ -199,7 +199,7 @@ module Bullet
199
199
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
200
200
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
201
201
  association = owner.association reflection.through_reflection.name
202
- Array(association.target).each do |through_record|
202
+ Array.wrap(association.target).each do |through_record|
203
203
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
204
204
  end
205
205
 
@@ -179,7 +179,7 @@ module Bullet
179
179
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
180
180
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
181
181
  association = owner.association(reflection.through_reflection.name)
182
- Array(association.target).each do |through_record|
182
+ Array.wrap(association.target).each do |through_record|
183
183
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
184
184
  end
185
185
 
@@ -226,7 +226,7 @@ module Bullet
226
226
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
227
227
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
228
228
  association = owner.association(reflection.through_reflection.name)
229
- Array(association.target).each do |through_record|
229
+ Array.wrap(association.target).each do |through_record|
230
230
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
231
231
  end
232
232
 
@@ -179,7 +179,7 @@ module Bullet
179
179
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
180
180
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
181
181
  association = owner.association(reflection.through_reflection.name)
182
- Array(association.target).each do |through_record|
182
+ Array.wrap(association.target).each do |through_record|
183
183
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
184
184
  end
185
185
 
@@ -226,7 +226,7 @@ module Bullet
226
226
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
227
227
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
228
228
  association = owner.association(reflection.through_reflection.name)
229
- Array(association.target).each do |through_record|
229
+ Array.wrap(association.target).each do |through_record|
230
230
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
231
231
  end
232
232
 
@@ -182,7 +182,7 @@ module Bullet
182
182
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
183
183
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
184
184
  association = owner.association(reflection.through_reflection.name)
185
- Array(association.target).each do |through_record|
185
+ Array.wrap(association.target).each do |through_record|
186
186
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
187
187
  end
188
188
 
@@ -229,7 +229,7 @@ module Bullet
229
229
  if is_a? ::ActiveRecord::Associations::ThroughAssociation
230
230
  Bullet::Detector::NPlusOneQuery.call_association(owner, reflection.through_reflection.name)
231
231
  association = owner.association(reflection.through_reflection.name)
232
- Array(association.target).each do |through_record|
232
+ Array.wrap(association.target).each do |through_record|
233
233
  Bullet::Detector::NPlusOneQuery.call_association(through_record, source_reflection.name)
234
234
  end
235
235
 
@@ -20,7 +20,7 @@
20
20
  if (this.onload) {
21
21
  this._storedOnload = this.onload;
22
22
  }
23
- this.onload = null
23
+ this.onload = null;
24
24
  this.addEventListener("load", bulletXHROnload);
25
25
  return Reflect.apply(oldSend, this, arguments);
26
26
  }
@@ -31,7 +31,7 @@
31
31
  ) {
32
32
  var bulletFooterText = this.getResponseHeader("X-bullet-footer-text");
33
33
  if (bulletFooterText) {
34
- setTimeout(function() {
34
+ setTimeout(function () {
35
35
  var oldHtml = document.querySelector("#bullet-footer").innerHTML.split("<br>");
36
36
  var header = oldHtml[0];
37
37
  oldHtml = oldHtml.slice(1, oldHtml.length);
@@ -42,7 +42,7 @@
42
42
  }
43
43
  var bulletConsoleText = this.getResponseHeader("X-bullet-console-text");
44
44
  if (bulletConsoleText && typeof console !== "undefined" && console.log) {
45
- setTimeout(function() {
45
+ setTimeout(function () {
46
46
  JSON.parse(bulletConsoleText).forEach((message) => {
47
47
  if (console.groupCollapsed && console.groupEnd) {
48
48
  console.groupCollapsed("Uniform Notifier");
@@ -20,7 +20,7 @@ module Bullet
20
20
  return unless Bullet.start?
21
21
  return unless Bullet.counter_cache_enable?
22
22
 
23
- objects = Array(object_or_objects)
23
+ objects = Array.wrap(object_or_objects)
24
24
  return if objects.map(&:bullet_primary_key_value).compact.empty?
25
25
 
26
26
  Bullet.debug(
@@ -54,7 +54,7 @@ module Bullet
54
54
  private
55
55
 
56
56
  def create_notification(klazz, associations)
57
- notify_associations = Array(associations) - Bullet.get_safelist_associations(:counter_cache, klazz)
57
+ notify_associations = Array.wrap(associations) - Bullet.get_safelist_associations(:counter_cache, klazz)
58
58
 
59
59
  if notify_associations.present?
60
60
  notice = Bullet::Notification::CounterCache.new klazz, notify_associations
@@ -7,7 +7,7 @@ module Bullet
7
7
  extend StackTraceFilter
8
8
 
9
9
  class << self
10
- # executed when object.assocations is called.
10
+ # executed when object.associations is called.
11
11
  # first, it keeps this method call for object.association.
12
12
  # then, it checks if this associations call is unpreload.
13
13
  # if it is, keeps this unpreload associations and caller.
@@ -33,7 +33,7 @@ module Bullet
33
33
  return unless Bullet.start?
34
34
  return unless Bullet.n_plus_one_query_enable?
35
35
 
36
- objects = Array(object_or_objects)
36
+ objects = Array.wrap(object_or_objects)
37
37
  return if objects.map(&:bullet_primary_key_value).compact.empty?
38
38
  return if objects.all? { |obj| obj.class.name =~ /^HABTM_/ }
39
39
 
@@ -95,7 +95,7 @@ module Bullet
95
95
  private
96
96
 
97
97
  def create_notification(callers, klazz, associations)
98
- notify_associations = Array(associations) - Bullet.get_safelist_associations(:n_plus_one_query, klazz)
98
+ notify_associations = Array.wrap(associations) - Bullet.get_safelist_associations(:n_plus_one_query, klazz)
99
99
 
100
100
  if notify_associations.present?
101
101
  notice = Bullet::Notification::NPlusOneQuery.new(callers, klazz, notify_associations)
@@ -10,7 +10,7 @@ module Bullet
10
10
  # check if there are unused preload associations.
11
11
  # get related_objects from eager_loadings associated with object and associations
12
12
  # get call_object_association from associations of call_object_associations whose object is in related_objects
13
- # if association not in call_object_association, then the object => association - call_object_association is ununsed preload assocations
13
+ # if association not in call_object_association, then the object => association - call_object_association is ununsed preload associations
14
14
  def check_unused_preload_associations
15
15
  return unless Bullet.start?
16
16
  return unless Bullet.unused_eager_loading_enable?
@@ -65,7 +65,7 @@ module Bullet
65
65
  private
66
66
 
67
67
  def create_notification(callers, klazz, associations)
68
- notify_associations = Array(associations) - Bullet.get_safelist_associations(:unused_eager_loading, klazz)
68
+ notify_associations = Array.wrap(associations) - Bullet.get_safelist_associations(:unused_eager_loading, klazz)
69
69
 
70
70
  if notify_associations.present?
71
71
  notice = Bullet::Notification::UnusedEagerLoading.new(callers, klazz, notify_associations)
data/lib/bullet/rack.rb CHANGED
@@ -79,7 +79,7 @@ module Bullet
79
79
  end
80
80
 
81
81
  def html_request?(headers, response)
82
- headers['Content-Type']&.include?('text/html') && response_body(response).include?('<html')
82
+ headers['Content-Type']&.include?('text/html')
83
83
  end
84
84
 
85
85
  def response_body(response)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bullet
4
- VERSION = '7.0.1'
4
+ VERSION = '7.0.3'
5
5
  end
data/lib/bullet.rb CHANGED
@@ -109,7 +109,7 @@ module Bullet
109
109
  end
110
110
 
111
111
  def get_safelist_associations(type, class_name)
112
- Array(@safelist[type][class_name])
112
+ Array.wrap(@safelist[type][class_name])
113
113
  end
114
114
 
115
115
  def reset_safelist
@@ -16,7 +16,6 @@ module Bullet
16
16
  Bullet.alert = true
17
17
  Bullet.bullet_logger = true
18
18
  Bullet.console = true
19
- # Bullet.growl = true
20
19
  Bullet.rails_logger = true
21
20
  Bullet.add_footer = true
22
21
  end
@@ -39,7 +39,7 @@ module Bullet
39
39
 
40
40
  it 'should be false if object, association pair is not existed' do
41
41
  NPlusOneQuery.add_object_associations(@post, :association1)
42
- expect(NPlusOneQuery.association?(@post, :associatio2)).to eq false
42
+ expect(NPlusOneQuery.association?(@post, :association2)).to eq false
43
43
  end
44
44
  end
45
45
 
@@ -74,8 +74,8 @@ module Bullet
74
74
  it 'should send full_notice to notifier' do
75
75
  notifier = double
76
76
  allow(subject).to receive(:notifier).and_return(notifier)
77
- allow(subject).to receive(:notification_data).and_return(foo: :bar)
78
- expect(notifier).to receive(:inline_notify).with(foo: :bar)
77
+ allow(subject).to receive(:notification_data).and_return({ foo: :bar })
78
+ expect(notifier).to receive(:inline_notify).with({ foo: :bar })
79
79
  subject.notify_inline
80
80
  end
81
81
  end
@@ -84,8 +84,8 @@ module Bullet
84
84
  it 'should send full_out_of_channel to notifier' do
85
85
  notifier = double
86
86
  allow(subject).to receive(:notifier).and_return(notifier)
87
- allow(subject).to receive(:notification_data).and_return(foo: :bar)
88
- expect(notifier).to receive(:out_of_channel_notify).with(foo: :bar)
87
+ allow(subject).to receive(:notification_data).and_return({ foo: :bar })
88
+ expect(notifier).to receive(:out_of_channel_notify).with({ foo: :bar })
89
89
  subject.notify_out_of_channel
90
90
  end
91
91
  end
@@ -31,12 +31,6 @@ module Bullet
31
31
  response = double(body: '<html><head></head><body></body></html>')
32
32
  expect(middleware).not_to be_html_request(headers, response)
33
33
  end
34
-
35
- it "should be false if response body doesn't contain html tag" do
36
- headers = { 'Content-Type' => 'text/html' }
37
- response = double(body: '<div>Partial</div>')
38
- expect(middleware).not_to be_html_request(headers, response)
39
- end
40
34
  end
41
35
 
42
36
  context 'empty?' do
@@ -92,7 +92,7 @@ module Support
92
92
  page3 = Page.create(name: 'page3', parent_id: folder2.id, author_id: author2.id)
93
93
  page4 = Page.create(name: 'page4', parent_id: folder2.id, author_id: author2.id)
94
94
 
95
- role1 = Role.create(name: 'Amdin')
95
+ role1 = Role.create(name: 'Admin')
96
96
  role2 = Role.create(name: 'User')
97
97
 
98
98
  user1 = User.create(name: 'user1', category: category1)
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: 7.0.1
4
+ version: 7.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-15 00:00:00.000000000 Z
11
+ date: 2022-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -195,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  - !ruby/object:Gem::Version
196
196
  version: 1.3.6
197
197
  requirements: []
198
- rubygems_version: 3.2.32
198
+ rubygems_version: 3.3.7
199
199
  signing_key:
200
200
  specification_version: 4
201
201
  summary: help to kill N+1 queries and unused eager loading.