sentry-ruby 5.10.0 → 5.17.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -13
- data/README.md +10 -10
- data/Rakefile +1 -1
- data/lib/sentry/background_worker.rb +9 -2
- data/lib/sentry/backpressure_monitor.rb +75 -0
- data/lib/sentry/backtrace.rb +7 -3
- data/lib/sentry/breadcrumb.rb +8 -2
- data/lib/sentry/check_in_event.rb +60 -0
- data/lib/sentry/client.rb +88 -17
- data/lib/sentry/configuration.rb +66 -12
- data/lib/sentry/cron/configuration.rb +23 -0
- data/lib/sentry/cron/monitor_check_ins.rb +75 -0
- data/lib/sentry/cron/monitor_config.rb +53 -0
- data/lib/sentry/cron/monitor_schedule.rb +42 -0
- data/lib/sentry/dsn.rb +1 -1
- data/lib/sentry/envelope.rb +19 -2
- data/lib/sentry/error_event.rb +2 -2
- data/lib/sentry/event.rb +14 -36
- data/lib/sentry/hub.rb +70 -2
- data/lib/sentry/integrable.rb +10 -0
- data/lib/sentry/interface.rb +1 -0
- data/lib/sentry/interfaces/exception.rb +5 -3
- data/lib/sentry/interfaces/mechanism.rb +20 -0
- data/lib/sentry/interfaces/request.rb +2 -2
- data/lib/sentry/interfaces/single_exception.rb +10 -6
- data/lib/sentry/interfaces/stacktrace_builder.rb +8 -0
- data/lib/sentry/metrics/aggregator.rb +276 -0
- data/lib/sentry/metrics/configuration.rb +47 -0
- data/lib/sentry/metrics/counter_metric.rb +25 -0
- data/lib/sentry/metrics/distribution_metric.rb +25 -0
- data/lib/sentry/metrics/gauge_metric.rb +35 -0
- data/lib/sentry/metrics/local_aggregator.rb +53 -0
- data/lib/sentry/metrics/metric.rb +19 -0
- data/lib/sentry/metrics/set_metric.rb +28 -0
- data/lib/sentry/metrics/timing.rb +43 -0
- data/lib/sentry/metrics.rb +55 -0
- data/lib/sentry/net/http.rb +25 -22
- data/lib/sentry/profiler.rb +18 -7
- data/lib/sentry/propagation_context.rb +135 -0
- data/lib/sentry/puma.rb +12 -5
- data/lib/sentry/rack/capture_exceptions.rb +7 -5
- data/lib/sentry/rake.rb +3 -14
- data/lib/sentry/redis.rb +8 -3
- data/lib/sentry/release_detector.rb +1 -1
- data/lib/sentry/scope.rb +36 -15
- data/lib/sentry/session.rb +2 -2
- data/lib/sentry/session_flusher.rb +1 -6
- data/lib/sentry/span.rb +54 -3
- data/lib/sentry/test_helper.rb +18 -12
- data/lib/sentry/transaction.rb +33 -33
- data/lib/sentry/transaction_event.rb +5 -3
- data/lib/sentry/transport/configuration.rb +73 -1
- data/lib/sentry/transport/http_transport.rb +68 -37
- data/lib/sentry/transport/spotlight_transport.rb +50 -0
- data/lib/sentry/transport.rb +27 -37
- data/lib/sentry/utils/argument_checking_helper.rb +12 -0
- data/lib/sentry/utils/real_ip.rb +1 -1
- data/lib/sentry/utils/request_id.rb +1 -1
- data/lib/sentry/version.rb +1 -1
- data/lib/sentry-ruby.rb +96 -26
- data/sentry-ruby.gemspec +1 -0
- metadata +35 -2
data/lib/sentry/transport.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "json"
|
4
|
-
require "base64"
|
5
4
|
require "sentry/envelope"
|
6
5
|
|
7
6
|
module Sentry
|
@@ -18,7 +17,9 @@ module Sentry
|
|
18
17
|
:network_error,
|
19
18
|
:sample_rate,
|
20
19
|
:before_send,
|
21
|
-
:event_processor
|
20
|
+
:event_processor,
|
21
|
+
:insufficient_data,
|
22
|
+
:backpressure
|
22
23
|
]
|
23
24
|
|
24
25
|
include LoggingHelper
|
@@ -73,7 +74,7 @@ module Sentry
|
|
73
74
|
result, oversized = item.serialize
|
74
75
|
|
75
76
|
if oversized
|
76
|
-
|
77
|
+
log_debug("Envelope item [#{item.type}] is still oversized after size reduction: {#{item.size_breakdown}}")
|
77
78
|
|
78
79
|
next
|
79
80
|
end
|
@@ -87,18 +88,9 @@ module Sentry
|
|
87
88
|
[data, serialized_items]
|
88
89
|
end
|
89
90
|
|
90
|
-
def is_rate_limited?(
|
91
|
+
def is_rate_limited?(data_category)
|
91
92
|
# check category-specific limit
|
92
|
-
category_delay =
|
93
|
-
case item_type
|
94
|
-
when "transaction"
|
95
|
-
@rate_limits["transaction"]
|
96
|
-
when "sessions"
|
97
|
-
@rate_limits["session"]
|
98
|
-
else
|
99
|
-
@rate_limits["error"]
|
100
|
-
end
|
101
|
-
|
93
|
+
category_delay = @rate_limits[data_category]
|
102
94
|
# check universal limit if not category limit
|
103
95
|
universal_delay = @rate_limits[nil]
|
104
96
|
|
@@ -118,16 +110,8 @@ module Sentry
|
|
118
110
|
!!delay && delay > Time.now
|
119
111
|
end
|
120
112
|
|
121
|
-
def
|
122
|
-
|
123
|
-
fields = {
|
124
|
-
'sentry_version' => PROTOCOL_VERSION,
|
125
|
-
'sentry_client' => USER_AGENT,
|
126
|
-
'sentry_timestamp' => now,
|
127
|
-
'sentry_key' => @dsn.public_key
|
128
|
-
}
|
129
|
-
fields['sentry_secret'] = @dsn.secret_key if @dsn.secret_key
|
130
|
-
'Sentry ' + fields.map { |key, value| "#{key}=#{value}" }.join(', ')
|
113
|
+
def any_rate_limited?
|
114
|
+
@rate_limits.values.any? { |t| t && t > Time.now }
|
131
115
|
end
|
132
116
|
|
133
117
|
def envelope_from_event(event)
|
@@ -143,7 +127,7 @@ module Sentry
|
|
143
127
|
sent_at: Sentry.utc_now.iso8601
|
144
128
|
}
|
145
129
|
|
146
|
-
if event.is_a?(
|
130
|
+
if event.is_a?(Event) && event.dynamic_sampling_context
|
147
131
|
envelope_headers[:trace] = event.dynamic_sampling_context
|
148
132
|
end
|
149
133
|
|
@@ -167,26 +151,31 @@ module Sentry
|
|
167
151
|
envelope
|
168
152
|
end
|
169
153
|
|
170
|
-
def record_lost_event(reason,
|
154
|
+
def record_lost_event(reason, data_category)
|
171
155
|
return unless @send_client_reports
|
172
156
|
return unless CLIENT_REPORT_REASONS.include?(reason)
|
173
157
|
|
174
|
-
@discarded_events[[reason,
|
158
|
+
@discarded_events[[reason, data_category]] += 1
|
159
|
+
end
|
160
|
+
|
161
|
+
def flush
|
162
|
+
client_report_headers, client_report_payload = fetch_pending_client_report(force: true)
|
163
|
+
return unless client_report_headers
|
164
|
+
|
165
|
+
envelope = Envelope.new
|
166
|
+
envelope.add_item(client_report_headers, client_report_payload)
|
167
|
+
send_envelope(envelope)
|
175
168
|
end
|
176
169
|
|
177
170
|
private
|
178
171
|
|
179
|
-
def fetch_pending_client_report
|
172
|
+
def fetch_pending_client_report(force: false)
|
180
173
|
return nil unless @send_client_reports
|
181
|
-
return nil if @last_client_report_sent > Time.now - CLIENT_REPORT_INTERVAL
|
174
|
+
return nil if !force && @last_client_report_sent > Time.now - CLIENT_REPORT_INTERVAL
|
182
175
|
return nil if @discarded_events.empty?
|
183
176
|
|
184
177
|
discarded_events_hash = @discarded_events.map do |key, val|
|
185
|
-
reason,
|
186
|
-
|
187
|
-
# 'event' has to be mapped to 'error'
|
188
|
-
category = type == 'transaction' ? 'transaction' : 'error'
|
189
|
-
|
178
|
+
reason, category = key
|
190
179
|
{ reason: reason, category: category, quantity: val }
|
191
180
|
end
|
192
181
|
|
@@ -204,9 +193,9 @@ module Sentry
|
|
204
193
|
|
205
194
|
def reject_rate_limited_items(envelope)
|
206
195
|
envelope.items.reject! do |item|
|
207
|
-
if is_rate_limited?(item.
|
208
|
-
|
209
|
-
record_lost_event(:ratelimit_backoff, item.
|
196
|
+
if is_rate_limited?(item.data_category)
|
197
|
+
log_debug("[Transport] Envelope item [#{item.type}] not sent: rate limiting")
|
198
|
+
record_lost_event(:ratelimit_backoff, item.data_category)
|
210
199
|
|
211
200
|
true
|
212
201
|
else
|
@@ -219,3 +208,4 @@ end
|
|
219
208
|
|
220
209
|
require "sentry/transport/dummy_transport"
|
221
210
|
require "sentry/transport/http_transport"
|
211
|
+
require "sentry/transport/spotlight_transport"
|
@@ -9,5 +9,17 @@ module Sentry
|
|
9
9
|
raise ArgumentError, "expect the argument to be a #{expected_types.join(' or ')}, got #{argument.class} (#{argument.inspect})"
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
def check_argument_includes!(argument, values)
|
14
|
+
unless values.include?(argument)
|
15
|
+
raise ArgumentError, "expect the argument to be one of #{values.map(&:inspect).join(' or ')}, got #{argument.inspect}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def check_callable!(name, value)
|
20
|
+
unless value == nil || value.respond_to?(:call)
|
21
|
+
raise ArgumentError, "#{name} must be callable (or nil to disable)"
|
22
|
+
end
|
23
|
+
end
|
12
24
|
end
|
13
25
|
end
|
data/lib/sentry/utils/real_ip.rb
CHANGED
@@ -15,7 +15,7 @@ module Sentry
|
|
15
15
|
"fc00::/7", # private IPv6 range fc00::/7
|
16
16
|
"10.0.0.0/8", # private IPv4 range 10.x.x.x
|
17
17
|
"172.16.0.0/12", # private IPv4 range 172.16.0.0 .. 172.31.255.255
|
18
|
-
"192.168.0.0/16"
|
18
|
+
"192.168.0.0/16" # private IPv4 range 192.168.x.x
|
19
19
|
]
|
20
20
|
|
21
21
|
attr_reader :ip
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Sentry
|
4
4
|
module Utils
|
5
5
|
module RequestId
|
6
|
-
REQUEST_ID_HEADERS = %w
|
6
|
+
REQUEST_ID_HEADERS = %w[action_dispatch.request_id HTTP_X_REQUEST_ID].freeze
|
7
7
|
|
8
8
|
# Request ID based on ActionDispatch::RequestId
|
9
9
|
def self.read_from(env)
|
data/lib/sentry/version.rb
CHANGED
data/lib/sentry-ruby.rb
CHANGED
@@ -15,15 +15,19 @@ require "sentry/logger"
|
|
15
15
|
require "sentry/event"
|
16
16
|
require "sentry/error_event"
|
17
17
|
require "sentry/transaction_event"
|
18
|
+
require "sentry/check_in_event"
|
18
19
|
require "sentry/span"
|
19
20
|
require "sentry/transaction"
|
20
21
|
require "sentry/hub"
|
21
22
|
require "sentry/background_worker"
|
22
23
|
require "sentry/session_flusher"
|
24
|
+
require "sentry/backpressure_monitor"
|
25
|
+
require "sentry/cron/monitor_check_ins"
|
26
|
+
require "sentry/metrics"
|
23
27
|
|
24
28
|
[
|
25
29
|
"sentry/rake",
|
26
|
-
"sentry/rack"
|
30
|
+
"sentry/rack"
|
27
31
|
].each do |lib|
|
28
32
|
begin
|
29
33
|
require lib
|
@@ -63,25 +67,33 @@ module Sentry
|
|
63
67
|
end
|
64
68
|
|
65
69
|
# @!attribute [rw] background_worker
|
66
|
-
# @return [BackgroundWorker
|
70
|
+
# @return [BackgroundWorker]
|
67
71
|
attr_accessor :background_worker
|
68
72
|
|
69
73
|
# @!attribute [r] session_flusher
|
70
74
|
# @return [SessionFlusher, nil]
|
71
75
|
attr_reader :session_flusher
|
72
76
|
|
77
|
+
# @!attribute [r] backpressure_monitor
|
78
|
+
# @return [BackpressureMonitor, nil]
|
79
|
+
attr_reader :backpressure_monitor
|
80
|
+
|
81
|
+
# @!attribute [r] metrics_aggregator
|
82
|
+
# @return [Metrics::Aggregator, nil]
|
83
|
+
attr_reader :metrics_aggregator
|
84
|
+
|
73
85
|
##### Patch Registration #####
|
74
86
|
|
75
87
|
# @!visibility private
|
76
|
-
def register_patch(patch = nil, target = nil, &block)
|
88
|
+
def register_patch(key, patch = nil, target = nil, &block)
|
77
89
|
if patch && block
|
78
90
|
raise ArgumentError.new("Please provide either a patch and its target OR a block, but not both")
|
79
91
|
end
|
80
92
|
|
81
93
|
if block
|
82
|
-
registered_patches
|
94
|
+
registered_patches[key] = block
|
83
95
|
else
|
84
|
-
registered_patches
|
96
|
+
registered_patches[key] = proc do
|
85
97
|
target.send(:prepend, patch) unless target.ancestors.include?(patch)
|
86
98
|
end
|
87
99
|
end
|
@@ -89,14 +101,14 @@ module Sentry
|
|
89
101
|
|
90
102
|
# @!visibility private
|
91
103
|
def apply_patches(config)
|
92
|
-
registered_patches.each do |patch|
|
93
|
-
patch.call(config)
|
104
|
+
registered_patches.each do |key, patch|
|
105
|
+
patch.call(config) if config.enabled_patches.include?(key)
|
94
106
|
end
|
95
107
|
end
|
96
108
|
|
97
109
|
# @!visibility private
|
98
110
|
def registered_patches
|
99
|
-
@registered_patches ||=
|
111
|
+
@registered_patches ||= {}
|
100
112
|
end
|
101
113
|
|
102
114
|
##### Integrations #####
|
@@ -215,17 +227,10 @@ module Sentry
|
|
215
227
|
Thread.current.thread_variable_set(THREAD_LOCAL, hub)
|
216
228
|
@main_hub = hub
|
217
229
|
@background_worker = Sentry::BackgroundWorker.new(config)
|
218
|
-
|
219
|
-
@
|
220
|
-
|
221
|
-
|
222
|
-
nil
|
223
|
-
end
|
224
|
-
|
225
|
-
if config.include_local_variables
|
226
|
-
exception_locals_tp.enable
|
227
|
-
end
|
228
|
-
|
230
|
+
@session_flusher = config.session_tracking? ? Sentry::SessionFlusher.new(config, client) : nil
|
231
|
+
@backpressure_monitor = config.enable_backpressure_handling ? Sentry::BackpressureMonitor.new(config, client) : nil
|
232
|
+
@metrics_aggregator = config.metrics.enabled ? Sentry::Metrics::Aggregator.new(config, client) : nil
|
233
|
+
exception_locals_tp.enable if config.include_local_variables
|
229
234
|
at_exit { close }
|
230
235
|
end
|
231
236
|
|
@@ -234,20 +239,33 @@ module Sentry
|
|
234
239
|
#
|
235
240
|
# @return [void]
|
236
241
|
def close
|
237
|
-
if @background_worker
|
238
|
-
@background_worker.shutdown
|
239
|
-
@background_worker = nil
|
240
|
-
end
|
241
|
-
|
242
242
|
if @session_flusher
|
243
|
+
@session_flusher.flush
|
243
244
|
@session_flusher.kill
|
244
245
|
@session_flusher = nil
|
245
246
|
end
|
246
247
|
|
247
|
-
if
|
248
|
-
|
248
|
+
if @backpressure_monitor
|
249
|
+
@backpressure_monitor.kill
|
250
|
+
@backpressure_monitor = nil
|
251
|
+
end
|
252
|
+
|
253
|
+
if @metrics_aggregator
|
254
|
+
@metrics_aggregator.flush(force: true)
|
255
|
+
@metrics_aggregator.kill
|
256
|
+
@metrics_aggregator = nil
|
257
|
+
end
|
258
|
+
|
259
|
+
if client = get_current_client
|
260
|
+
client.flush
|
261
|
+
|
262
|
+
if client.configuration.include_local_variables
|
263
|
+
exception_locals_tp.disable
|
264
|
+
end
|
249
265
|
end
|
250
266
|
|
267
|
+
@background_worker.shutdown
|
268
|
+
|
251
269
|
@main_hub = nil
|
252
270
|
Thread.current.thread_variable_set(THREAD_LOCAL, nil)
|
253
271
|
end
|
@@ -430,6 +448,22 @@ module Sentry
|
|
430
448
|
get_current_hub.capture_event(event)
|
431
449
|
end
|
432
450
|
|
451
|
+
# Captures a check-in and sends it to Sentry via the currently active hub.
|
452
|
+
#
|
453
|
+
# @param slug [String] identifier of this monitor
|
454
|
+
# @param status [Symbol] status of this check-in, one of {CheckInEvent::VALID_STATUSES}
|
455
|
+
#
|
456
|
+
# @param [Hash] options extra check-in options
|
457
|
+
# @option options [String] check_in_id for updating the status of an existing monitor
|
458
|
+
# @option options [Integer] duration seconds elapsed since this monitor started
|
459
|
+
# @option options [Cron::MonitorConfig] monitor_config configuration for this monitor
|
460
|
+
#
|
461
|
+
# @return [String, nil] The {CheckInEvent#check_in_id} to use for later updates on the same slug
|
462
|
+
def capture_check_in(slug, status, **options)
|
463
|
+
return unless initialized?
|
464
|
+
get_current_hub.capture_check_in(slug, status, **options)
|
465
|
+
end
|
466
|
+
|
433
467
|
# Takes or initializes a new Sentry::Transaction and makes a sampling decision for it.
|
434
468
|
#
|
435
469
|
# @return [Transaction, nil]
|
@@ -489,6 +523,42 @@ module Sentry
|
|
489
523
|
Scope.add_global_event_processor(&block)
|
490
524
|
end
|
491
525
|
|
526
|
+
# Returns the traceparent (sentry-trace) header for distributed tracing.
|
527
|
+
# Can be either from the currently active span or the propagation context.
|
528
|
+
#
|
529
|
+
# @return [String, nil]
|
530
|
+
def get_traceparent
|
531
|
+
return nil unless initialized?
|
532
|
+
get_current_hub.get_traceparent
|
533
|
+
end
|
534
|
+
|
535
|
+
# Returns the baggage header for distributed tracing.
|
536
|
+
# Can be either from the currently active span or the propagation context.
|
537
|
+
#
|
538
|
+
# @return [String, nil]
|
539
|
+
def get_baggage
|
540
|
+
return nil unless initialized?
|
541
|
+
get_current_hub.get_baggage
|
542
|
+
end
|
543
|
+
|
544
|
+
# Returns the a Hash containing sentry-trace and baggage.
|
545
|
+
# Can be either from the currently active span or the propagation context.
|
546
|
+
#
|
547
|
+
# @return [Hash, nil]
|
548
|
+
def get_trace_propagation_headers
|
549
|
+
return nil unless initialized?
|
550
|
+
get_current_hub.get_trace_propagation_headers
|
551
|
+
end
|
552
|
+
|
553
|
+
# Continue an incoming trace from a rack env like hash.
|
554
|
+
#
|
555
|
+
# @param env [Hash]
|
556
|
+
# @return [Transaction, nil]
|
557
|
+
def continue_trace(env, **options)
|
558
|
+
return nil unless initialized?
|
559
|
+
get_current_hub.continue_trace(env, **options)
|
560
|
+
end
|
561
|
+
|
492
562
|
##### Helpers #####
|
493
563
|
|
494
564
|
# @!visibility private
|
data/sentry-ruby.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.17.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sentry Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.0.2
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: bigdecimal
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
33
47
|
description: A gem that provides a client interface for the Sentry error logger
|
34
48
|
email: accounts@sentry.io
|
35
49
|
executables: []
|
@@ -51,15 +65,21 @@ files:
|
|
51
65
|
- bin/setup
|
52
66
|
- lib/sentry-ruby.rb
|
53
67
|
- lib/sentry/background_worker.rb
|
68
|
+
- lib/sentry/backpressure_monitor.rb
|
54
69
|
- lib/sentry/backtrace.rb
|
55
70
|
- lib/sentry/baggage.rb
|
56
71
|
- lib/sentry/breadcrumb.rb
|
57
72
|
- lib/sentry/breadcrumb/sentry_logger.rb
|
58
73
|
- lib/sentry/breadcrumb_buffer.rb
|
74
|
+
- lib/sentry/check_in_event.rb
|
59
75
|
- lib/sentry/client.rb
|
60
76
|
- lib/sentry/configuration.rb
|
61
77
|
- lib/sentry/core_ext/object/deep_dup.rb
|
62
78
|
- lib/sentry/core_ext/object/duplicable.rb
|
79
|
+
- lib/sentry/cron/configuration.rb
|
80
|
+
- lib/sentry/cron/monitor_check_ins.rb
|
81
|
+
- lib/sentry/cron/monitor_config.rb
|
82
|
+
- lib/sentry/cron/monitor_schedule.rb
|
63
83
|
- lib/sentry/dsn.rb
|
64
84
|
- lib/sentry/envelope.rb
|
65
85
|
- lib/sentry/error_event.rb
|
@@ -69,6 +89,7 @@ files:
|
|
69
89
|
- lib/sentry/integrable.rb
|
70
90
|
- lib/sentry/interface.rb
|
71
91
|
- lib/sentry/interfaces/exception.rb
|
92
|
+
- lib/sentry/interfaces/mechanism.rb
|
72
93
|
- lib/sentry/interfaces/request.rb
|
73
94
|
- lib/sentry/interfaces/single_exception.rb
|
74
95
|
- lib/sentry/interfaces/stacktrace.rb
|
@@ -76,8 +97,19 @@ files:
|
|
76
97
|
- lib/sentry/interfaces/threads.rb
|
77
98
|
- lib/sentry/linecache.rb
|
78
99
|
- lib/sentry/logger.rb
|
100
|
+
- lib/sentry/metrics.rb
|
101
|
+
- lib/sentry/metrics/aggregator.rb
|
102
|
+
- lib/sentry/metrics/configuration.rb
|
103
|
+
- lib/sentry/metrics/counter_metric.rb
|
104
|
+
- lib/sentry/metrics/distribution_metric.rb
|
105
|
+
- lib/sentry/metrics/gauge_metric.rb
|
106
|
+
- lib/sentry/metrics/local_aggregator.rb
|
107
|
+
- lib/sentry/metrics/metric.rb
|
108
|
+
- lib/sentry/metrics/set_metric.rb
|
109
|
+
- lib/sentry/metrics/timing.rb
|
79
110
|
- lib/sentry/net/http.rb
|
80
111
|
- lib/sentry/profiler.rb
|
112
|
+
- lib/sentry/propagation_context.rb
|
81
113
|
- lib/sentry/puma.rb
|
82
114
|
- lib/sentry/rack.rb
|
83
115
|
- lib/sentry/rack/capture_exceptions.rb
|
@@ -95,6 +127,7 @@ files:
|
|
95
127
|
- lib/sentry/transport/configuration.rb
|
96
128
|
- lib/sentry/transport/dummy_transport.rb
|
97
129
|
- lib/sentry/transport/http_transport.rb
|
130
|
+
- lib/sentry/transport/spotlight_transport.rb
|
98
131
|
- lib/sentry/utils/argument_checking_helper.rb
|
99
132
|
- lib/sentry/utils/custom_inspection.rb
|
100
133
|
- lib/sentry/utils/encoding_helper.rb
|