honeybadger 5.13.0 → 5.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/honeybadger/config.rb +0 -1
- data/lib/honeybadger/notification_subscriber.rb +10 -3
- data/lib/honeybadger/plugins/rails.rb +10 -8
- data/lib/honeybadger/util/sql.rb +16 -19
- data/lib/honeybadger/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49f0e76e4da63a4398fcb71cc8fb153f5a854cd13a0d163924adc41473460401
|
4
|
+
data.tar.gz: f8adacb9335c3d42f3fa2991eb05453551cb546b1d439e504fff32d5c41703b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5022f0122bb51b147f6014e25f204250906b33c4e0e25c9699302e8e8a1bc97bad41497546f93c2d8cb9442de53d207309003699dfc55ae6190e14c2b110cff
|
7
|
+
data.tar.gz: dc28062240092dd136fb22ccd54b45882e850a6982f13225924606ff4e7805451e12a9516a9deba75ee83c71d0f2fcae400c70df2be191d8d5b1b402c8a71365
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
3
|
|
4
|
+
## [5.13.1](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.13.0...v5.13.1) (2024-07-01)
|
5
|
+
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
|
9
|
+
* do not check for rails console ([#574](https://github.com/honeybadger-io/honeybadger-ruby/issues/574)) ([ba74af8](https://github.com/honeybadger-io/honeybadger-ruby/commit/ba74af8b55393ea0a96962085ea48c4376380be3))
|
10
|
+
* ignore content-less SQL statements ([#572](https://github.com/honeybadger-io/honeybadger-ruby/issues/572)) ([e7ecd36](https://github.com/honeybadger-io/honeybadger-ruby/commit/e7ecd36969922496e276a246406fe7d792de00e3))
|
11
|
+
* sanitize SQL when reporting SQL queries ([#571](https://github.com/honeybadger-io/honeybadger-ruby/issues/571)) ([40d4a79](https://github.com/honeybadger-io/honeybadger-ruby/commit/40d4a79a5c1f758fe49779e63697d56599537235))
|
12
|
+
|
4
13
|
## [5.13.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.12.0...v5.13.0) (2024-06-18)
|
5
14
|
|
6
15
|
|
data/lib/honeybadger/config.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'honeybadger/instrumentation_helper'
|
2
|
+
require 'honeybadger/util/sql'
|
2
3
|
|
3
4
|
module Honeybadger
|
4
5
|
class NotificationSubscriber
|
@@ -9,7 +10,7 @@ module Honeybadger
|
|
9
10
|
def finish(name, id, payload)
|
10
11
|
@finish_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
11
12
|
|
12
|
-
return unless process?(name)
|
13
|
+
return unless process?(name, payload)
|
13
14
|
|
14
15
|
payload = {
|
15
16
|
instrumenter_id: id,
|
@@ -23,7 +24,7 @@ module Honeybadger
|
|
23
24
|
Honeybadger.event(name, payload)
|
24
25
|
end
|
25
26
|
|
26
|
-
def process?(event)
|
27
|
+
def process?(event, payload)
|
27
28
|
true
|
28
29
|
end
|
29
30
|
|
@@ -58,10 +59,16 @@ module Honeybadger
|
|
58
59
|
class ActiveRecordSubscriber < NotificationSubscriber
|
59
60
|
def format_payload(payload)
|
60
61
|
{
|
61
|
-
query: payload[:sql].
|
62
|
+
query: Util::SQL.obfuscate(payload[:sql], payload[:connection].adapter_name),
|
62
63
|
async: payload[:async]
|
63
64
|
}
|
64
65
|
end
|
66
|
+
|
67
|
+
def process?(event, payload)
|
68
|
+
return false if payload[:name] == "SCHEMA"
|
69
|
+
return false if payload[:sql]&.match?(/^(begin|commit)( transaction)?$/i)
|
70
|
+
true
|
71
|
+
end
|
65
72
|
end
|
66
73
|
|
67
74
|
class ActiveJobSubscriber < NotificationSubscriber
|
@@ -71,16 +71,18 @@ module Honeybadger
|
|
71
71
|
end
|
72
72
|
|
73
73
|
Plugin.register :rails do
|
74
|
-
requirement {
|
74
|
+
requirement { defined?(::Rails.application) && ::Rails.application }
|
75
75
|
|
76
76
|
execution do
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
77
|
+
if config.load_plugin_insights?(:rails)
|
78
|
+
::ActiveSupport::Notifications.subscribe(/(process_action|send_file|redirect_to|halted_callback|unpermitted_parameters)\.action_controller/, Honeybadger::ActionControllerSubscriber.new)
|
79
|
+
::ActiveSupport::Notifications.subscribe(/(write_fragment|read_fragment|expire_fragment|exist_fragment\?)\.action_controller/, Honeybadger::ActionControllerCacheSubscriber.new)
|
80
|
+
::ActiveSupport::Notifications.subscribe(/cache_(read|read_multi|generate|fetch_hit|write|write_multi|increment|decrement|delete|delete_multi|cleanup|prune|exist\?)\.active_support/, Honeybadger::ActiveSupportCacheSubscriber.new)
|
81
|
+
::ActiveSupport::Notifications.subscribe(/^render_(template|partial|collection)\.action_view/, Honeybadger::ActionViewSubscriber.new)
|
82
|
+
::ActiveSupport::Notifications.subscribe("sql.active_record", Honeybadger::ActiveRecordSubscriber.new)
|
83
|
+
::ActiveSupport::Notifications.subscribe("process.action_mailer", Honeybadger::ActionMailerSubscriber.new)
|
84
|
+
::ActiveSupport::Notifications.subscribe(/(service_upload|service_download)\.active_storage/, Honeybadger::ActiveStorageSubscriber.new)
|
85
|
+
end
|
84
86
|
end
|
85
87
|
end
|
86
88
|
end
|
data/lib/honeybadger/util/sql.rb
CHANGED
@@ -1,32 +1,29 @@
|
|
1
1
|
module Honeybadger
|
2
2
|
module Util
|
3
3
|
class SQL
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
Replacement = "?".freeze
|
10
|
-
EmptyReplacement = "".freeze
|
11
|
-
DoubleQuoters = /(postgres|sqlite|postgis)/.freeze
|
4
|
+
ESCAPE_QUOTES = /(\\"|\\')/
|
5
|
+
SQUOTE_DATA = /'(?:[^']|'')*'/
|
6
|
+
DQUOTE_DATA = /"(?:[^"]|"")*"/
|
7
|
+
NUMBER_DATA = /\b\d+\b/
|
8
|
+
DOUBLE_QUOTERS = /(postgres|sqlite|postgis)/i
|
12
9
|
|
13
10
|
def self.obfuscate(sql, adapter)
|
14
|
-
force_utf_8(sql.dup).tap do |s|
|
15
|
-
s.gsub!(
|
16
|
-
s.gsub!(
|
17
|
-
s.gsub!(
|
18
|
-
s.gsub!(
|
19
|
-
s.gsub!(
|
20
|
-
s.
|
11
|
+
force_utf_8(sql.to_s.dup).tap do |s|
|
12
|
+
s.gsub!(/\s+/, " ")
|
13
|
+
s.gsub!(ESCAPE_QUOTES, "".freeze)
|
14
|
+
s.gsub!(SQUOTE_DATA, "'?'".freeze)
|
15
|
+
s.gsub!(DQUOTE_DATA, '"?"'.freeze) unless adapter.to_s.match?(DOUBLE_QUOTERS)
|
16
|
+
s.gsub!(NUMBER_DATA, "?".freeze)
|
17
|
+
s.strip!
|
21
18
|
end
|
22
19
|
end
|
23
20
|
|
24
21
|
def self.force_utf_8(string)
|
25
22
|
string.encode(
|
26
|
-
Encoding.find(
|
27
|
-
invalid: :replace,
|
28
|
-
undef: :replace,
|
29
|
-
replace:
|
23
|
+
Encoding.find("UTF-8"),
|
24
|
+
invalid: :replace,
|
25
|
+
undef: :replace,
|
26
|
+
replace: ""
|
30
27
|
)
|
31
28
|
end
|
32
29
|
end
|
data/lib/honeybadger/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeybadger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.13.
|
4
|
+
version: 5.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Honeybadger Industries LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Make managing application errors a more pleasant experience.
|
14
14
|
email:
|