Skip to content

Commit f5f2101

Browse files
committed
Move Rails logic to its own subscriber
1 parent 36f41ea commit f5f2101

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

lib/honeybadger/notification_subscriber.rb

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,39 @@ def finish(name, id, payload)
1717
instrumenter_id: id,
1818
duration: ((finish_time - payload.delete(:_start_time)) * 1000).round(2)
1919
}.merge(format_payload(payload).compact)
20+
2021
record(name, payload)
22+
record_metrics(name, payload)
2123
end
2224

2325
def record(name, payload)
24-
if Honeybadger.config.load_plugin_insights_events?(:rails)
25-
Honeybadger.event(name, payload)
26-
end
26+
Honeybadger.event(name, payload)
27+
end
2728

28-
if Honeybadger.config.load_plugin_insights_metrics?(:rails)
29-
metric_source "rails"
30-
record_metrics(name, payload)
31-
end
29+
def record_metrics(name, payload)
30+
# noop
31+
end
32+
33+
def process?(name, payload)
34+
true
35+
end
36+
37+
def format_payload(payload)
38+
payload
39+
end
40+
end
41+
42+
class RailsSubscriber < NotificationSubscriber
43+
def record(name, payload)
44+
return unless Honeybadger.config.load_plugin_insights_events?(:rails)
45+
Honeybadger.event(name, payload)
3246
end
3347

3448
def record_metrics(name, payload)
49+
return unless Honeybadger.config.load_plugin_insights_metrics?(:rails)
50+
51+
metric_source "rails"
52+
3553
case name
3654
when "sql.active_record"
3755
gauge("duration.sql.active_record", value: payload[:duration], **payload.slice(:query))
@@ -45,37 +63,29 @@ def record_metrics(name, payload)
4563
gauge("duration.#{name}", value: payload[:duration], **payload.slice(:store, :key))
4664
end
4765
end
48-
49-
def process?(event, payload)
50-
true
51-
end
52-
53-
def format_payload(payload)
54-
payload
55-
end
5666
end
5767

58-
class ActionControllerSubscriber < NotificationSubscriber
68+
class ActionControllerSubscriber < RailsSubscriber
5969
def format_payload(payload)
6070
payload.except(:headers, :request, :response)
6171
end
6272
end
6373

64-
class ActionControllerCacheSubscriber < NotificationSubscriber
74+
class ActionControllerCacheSubscriber < RailsSubscriber
6575
def format_payload(payload)
6676
payload[:key] = ::ActiveSupport::Cache.expand_cache_key(payload[:key]) if payload[:key]
6777
payload
6878
end
6979
end
7080

71-
class ActiveSupportCacheSubscriber < NotificationSubscriber
81+
class ActiveSupportCacheSubscriber < RailsSubscriber
7282
def format_payload(payload)
7383
payload[:key] = ::ActiveSupport::Cache.expand_cache_key(payload[:key]) if payload[:key]
7484
payload
7585
end
7686
end
7787

78-
class ActiveSupportCacheMultiSubscriber < NotificationSubscriber
88+
class ActiveSupportCacheMultiSubscriber < RailsSubscriber
7989
def format_payload(payload)
8090
payload[:key] = expand_cache_keys_from_payload(payload[:key])
8191
payload[:hits] = expand_cache_keys_from_payload(payload[:hits])
@@ -93,7 +103,7 @@ def expand_cache_keys_from_payload(data)
93103
end
94104
end
95105

96-
class ActionViewSubscriber < NotificationSubscriber
106+
class ActionViewSubscriber < RailsSubscriber
97107
PROJECT_ROOT = defined?(::Rails) ? ::Rails.root.to_s : ""
98108

99109
def format_payload(payload)
@@ -104,7 +114,7 @@ def format_payload(payload)
104114
end
105115
end
106116

107-
class ActiveRecordSubscriber < NotificationSubscriber
117+
class ActiveRecordSubscriber < RailsSubscriber
108118
def format_payload(payload)
109119
{
110120
query: Util::SQL.obfuscate(payload[:sql], payload[:connection]&.adapter_name),
@@ -113,13 +123,13 @@ def format_payload(payload)
113123
}
114124
end
115125

116-
def process?(event, payload)
126+
def process?(name, payload)
117127
return false if payload[:name] == "SCHEMA"
118128
true
119129
end
120130
end
121131

122-
class ActiveJobSubscriber < NotificationSubscriber
132+
class ActiveJobSubscriber < RailsSubscriber
123133
def format_payload(payload)
124134
job = payload[:job]
125135
jobs = payload[:jobs]
@@ -145,7 +155,7 @@ def format_payload(payload)
145155
end
146156
end
147157

148-
class ActionMailerSubscriber < NotificationSubscriber
158+
class ActionMailerSubscriber < RailsSubscriber
149159
def format_payload(payload)
150160
# Don't include the mail object in the payload...
151161
mail = payload.delete(:mail)
@@ -161,6 +171,6 @@ def format_payload(payload)
161171
end
162172
end
163173

164-
class ActiveStorageSubscriber < NotificationSubscriber
174+
class ActiveStorageSubscriber < RailsSubscriber
165175
end
166176
end

0 commit comments

Comments
 (0)