sentry-ruby 5.9.0 → 5.26.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.
- checksums.yaml +4 -4
- data/.rspec +3 -1
- data/Gemfile +12 -10
- data/README.md +26 -11
- data/Rakefile +9 -11
- data/bin/console +2 -0
- data/lib/sentry/attachment.rb +40 -0
- data/lib/sentry/background_worker.rb +11 -5
- data/lib/sentry/backpressure_monitor.rb +45 -0
- data/lib/sentry/backtrace.rb +12 -9
- data/lib/sentry/baggage.rb +7 -7
- data/lib/sentry/breadcrumb/sentry_logger.rb +6 -6
- data/lib/sentry/breadcrumb.rb +13 -6
- data/lib/sentry/check_in_event.rb +61 -0
- data/lib/sentry/client.rb +214 -25
- data/lib/sentry/configuration.rb +251 -42
- data/lib/sentry/core_ext/object/deep_dup.rb +1 -1
- data/lib/sentry/cron/configuration.rb +23 -0
- data/lib/sentry/cron/monitor_check_ins.rb +77 -0
- data/lib/sentry/cron/monitor_config.rb +53 -0
- data/lib/sentry/cron/monitor_schedule.rb +42 -0
- data/lib/sentry/dsn.rb +4 -4
- data/lib/sentry/envelope/item.rb +88 -0
- data/lib/sentry/envelope.rb +2 -68
- data/lib/sentry/error_event.rb +2 -2
- data/lib/sentry/event.rb +28 -47
- data/lib/sentry/excon/middleware.rb +77 -0
- data/lib/sentry/excon.rb +10 -0
- data/lib/sentry/faraday.rb +77 -0
- data/lib/sentry/graphql.rb +9 -0
- data/lib/sentry/hub.rb +143 -7
- 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 +8 -8
- data/lib/sentry/interfaces/single_exception.rb +13 -9
- data/lib/sentry/interfaces/stacktrace.rb +3 -1
- data/lib/sentry/interfaces/stacktrace_builder.rb +23 -2
- data/lib/sentry/linecache.rb +3 -3
- data/lib/sentry/log_event.rb +206 -0
- data/lib/sentry/log_event_buffer.rb +75 -0
- data/lib/sentry/logger.rb +1 -1
- data/lib/sentry/metrics/aggregator.rb +248 -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 +51 -0
- data/lib/sentry/metrics.rb +56 -0
- data/lib/sentry/net/http.rb +28 -42
- data/lib/sentry/profiler/helpers.rb +46 -0
- data/lib/sentry/profiler.rb +41 -60
- data/lib/sentry/propagation_context.rb +135 -0
- data/lib/sentry/puma.rb +12 -5
- data/lib/sentry/rack/capture_exceptions.rb +17 -8
- data/lib/sentry/rack.rb +2 -2
- data/lib/sentry/rake.rb +4 -15
- data/lib/sentry/redis.rb +11 -4
- data/lib/sentry/release_detector.rb +5 -5
- data/lib/sentry/rspec.rb +91 -0
- data/lib/sentry/scope.rb +75 -39
- data/lib/sentry/session.rb +2 -2
- data/lib/sentry/session_flusher.rb +15 -43
- data/lib/sentry/span.rb +92 -8
- data/lib/sentry/std_lib_logger.rb +50 -0
- data/lib/sentry/structured_logger.rb +138 -0
- data/lib/sentry/test_helper.rb +42 -13
- data/lib/sentry/threaded_periodic_worker.rb +39 -0
- data/lib/sentry/transaction.rb +44 -43
- data/lib/sentry/transaction_event.rb +10 -6
- data/lib/sentry/transport/configuration.rb +73 -1
- data/lib/sentry/transport/http_transport.rb +71 -41
- data/lib/sentry/transport/spotlight_transport.rb +50 -0
- data/lib/sentry/transport.rb +53 -49
- data/lib/sentry/utils/argument_checking_helper.rb +15 -3
- data/lib/sentry/utils/env_helper.rb +21 -0
- data/lib/sentry/utils/http_tracing.rb +74 -0
- data/lib/sentry/utils/logging_helper.rb +10 -7
- data/lib/sentry/utils/real_ip.rb +2 -2
- data/lib/sentry/utils/request_id.rb +1 -1
- data/lib/sentry/utils/uuid.rb +13 -0
- data/lib/sentry/vernier/output.rb +89 -0
- data/lib/sentry/vernier/profiler.rb +132 -0
- data/lib/sentry/version.rb +1 -1
- data/lib/sentry-ruby.rb +206 -35
- data/sentry-ruby-core.gemspec +3 -1
- data/sentry-ruby.gemspec +15 -6
- metadata +61 -12
- data/CODE_OF_CONDUCT.md +0 -74
data/lib/sentry-ruby.rb
CHANGED
@@ -11,19 +11,25 @@ require "sentry/utils/argument_checking_helper"
|
|
11
11
|
require "sentry/utils/encoding_helper"
|
12
12
|
require "sentry/utils/logging_helper"
|
13
13
|
require "sentry/configuration"
|
14
|
-
require "sentry/
|
14
|
+
require "sentry/structured_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"
|
23
|
+
require "sentry/threaded_periodic_worker"
|
22
24
|
require "sentry/session_flusher"
|
25
|
+
require "sentry/backpressure_monitor"
|
26
|
+
require "sentry/cron/monitor_check_ins"
|
27
|
+
require "sentry/metrics"
|
28
|
+
require "sentry/vernier/profiler"
|
23
29
|
|
24
30
|
[
|
25
31
|
"sentry/rake",
|
26
|
-
"sentry/rack"
|
32
|
+
"sentry/rack"
|
27
33
|
].each do |lib|
|
28
34
|
begin
|
29
35
|
require lib
|
@@ -36,14 +42,25 @@ module Sentry
|
|
36
42
|
|
37
43
|
CAPTURED_SIGNATURE = :@__sentry_captured
|
38
44
|
|
39
|
-
LOGGER_PROGNAME = "sentry"
|
45
|
+
LOGGER_PROGNAME = "sentry"
|
40
46
|
|
41
|
-
SENTRY_TRACE_HEADER_NAME = "sentry-trace"
|
47
|
+
SENTRY_TRACE_HEADER_NAME = "sentry-trace"
|
42
48
|
|
43
|
-
BAGGAGE_HEADER_NAME = "baggage"
|
49
|
+
BAGGAGE_HEADER_NAME = "baggage"
|
44
50
|
|
45
51
|
THREAD_LOCAL = :sentry_hub
|
46
52
|
|
53
|
+
MUTEX = Mutex.new
|
54
|
+
|
55
|
+
GLOBALS = %i[
|
56
|
+
main_hub
|
57
|
+
logger
|
58
|
+
session_flusher
|
59
|
+
backpressure_monitor
|
60
|
+
metrics_aggregator
|
61
|
+
exception_locals_tp
|
62
|
+
].freeze
|
63
|
+
|
47
64
|
class << self
|
48
65
|
# @!visibility private
|
49
66
|
def exception_locals_tp
|
@@ -63,25 +80,33 @@ module Sentry
|
|
63
80
|
end
|
64
81
|
|
65
82
|
# @!attribute [rw] background_worker
|
66
|
-
# @return [BackgroundWorker
|
83
|
+
# @return [BackgroundWorker]
|
67
84
|
attr_accessor :background_worker
|
68
85
|
|
69
86
|
# @!attribute [r] session_flusher
|
70
87
|
# @return [SessionFlusher, nil]
|
71
88
|
attr_reader :session_flusher
|
72
89
|
|
90
|
+
# @!attribute [r] backpressure_monitor
|
91
|
+
# @return [BackpressureMonitor, nil]
|
92
|
+
attr_reader :backpressure_monitor
|
93
|
+
|
94
|
+
# @!attribute [r] metrics_aggregator
|
95
|
+
# @return [Metrics::Aggregator, nil]
|
96
|
+
attr_reader :metrics_aggregator
|
97
|
+
|
73
98
|
##### Patch Registration #####
|
74
99
|
|
75
100
|
# @!visibility private
|
76
|
-
def register_patch(patch = nil, target = nil, &block)
|
101
|
+
def register_patch(key, patch = nil, target = nil, &block)
|
77
102
|
if patch && block
|
78
103
|
raise ArgumentError.new("Please provide either a patch and its target OR a block, but not both")
|
79
104
|
end
|
80
105
|
|
81
106
|
if block
|
82
|
-
registered_patches
|
107
|
+
registered_patches[key] = block
|
83
108
|
else
|
84
|
-
registered_patches
|
109
|
+
registered_patches[key] = proc do
|
85
110
|
target.send(:prepend, patch) unless target.ancestors.include?(patch)
|
86
111
|
end
|
87
112
|
end
|
@@ -89,14 +114,14 @@ module Sentry
|
|
89
114
|
|
90
115
|
# @!visibility private
|
91
116
|
def apply_patches(config)
|
92
|
-
registered_patches.each do |patch|
|
93
|
-
patch.call(config)
|
117
|
+
registered_patches.each do |key, patch|
|
118
|
+
patch.call(config) if config.enabled_patches.include?(key)
|
94
119
|
end
|
95
120
|
end
|
96
121
|
|
97
122
|
# @!visibility private
|
98
123
|
def registered_patches
|
99
|
-
@registered_patches ||=
|
124
|
+
@registered_patches ||= {}
|
100
125
|
end
|
101
126
|
|
102
127
|
##### Integrations #####
|
@@ -114,7 +139,7 @@ module Sentry
|
|
114
139
|
# @param version [String] version of the integration
|
115
140
|
def register_integration(name, version)
|
116
141
|
if initialized?
|
117
|
-
|
142
|
+
sdk_logger.warn(LOGGER_PROGNAME) do
|
118
143
|
<<~MSG
|
119
144
|
Integration '#{name}' is loaded after the SDK is initialized, which can cause unexpected behavior. Please make sure all integrations are loaded before SDK initialization.
|
120
145
|
MSG
|
@@ -198,6 +223,13 @@ module Sentry
|
|
198
223
|
get_current_scope.set_context(*args)
|
199
224
|
end
|
200
225
|
|
226
|
+
# @!method add_attachment
|
227
|
+
# @!macro add_attachment
|
228
|
+
def add_attachment(**opts)
|
229
|
+
return unless initialized?
|
230
|
+
get_current_scope.add_attachment(**opts)
|
231
|
+
end
|
232
|
+
|
201
233
|
##### Main APIs #####
|
202
234
|
|
203
235
|
# Initializes the SDK with given configuration.
|
@@ -207,25 +239,20 @@ module Sentry
|
|
207
239
|
def init(&block)
|
208
240
|
config = Configuration.new
|
209
241
|
yield(config) if block_given?
|
242
|
+
|
210
243
|
config.detect_release
|
211
244
|
apply_patches(config)
|
245
|
+
config.validate
|
212
246
|
client = Client.new(config)
|
213
247
|
scope = Scope.new(max_breadcrumbs: config.max_breadcrumbs)
|
214
248
|
hub = Hub.new(client, scope)
|
215
249
|
Thread.current.thread_variable_set(THREAD_LOCAL, hub)
|
216
250
|
@main_hub = hub
|
217
251
|
@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
|
-
|
252
|
+
@session_flusher = config.session_tracking? ? Sentry::SessionFlusher.new(config, client) : nil
|
253
|
+
@backpressure_monitor = config.enable_backpressure_handling ? Sentry::BackpressureMonitor.new(config, client) : nil
|
254
|
+
@metrics_aggregator = config.metrics.enabled ? Sentry::Metrics::Aggregator.new(config, client) : nil
|
255
|
+
exception_locals_tp.enable if config.include_local_variables
|
229
256
|
at_exit { close }
|
230
257
|
end
|
231
258
|
|
@@ -234,22 +261,37 @@ module Sentry
|
|
234
261
|
#
|
235
262
|
# @return [void]
|
236
263
|
def close
|
237
|
-
if @background_worker
|
238
|
-
@background_worker.shutdown
|
239
|
-
@background_worker = nil
|
240
|
-
end
|
241
|
-
|
242
264
|
if @session_flusher
|
265
|
+
@session_flusher.flush
|
243
266
|
@session_flusher.kill
|
244
267
|
@session_flusher = nil
|
245
268
|
end
|
246
269
|
|
247
|
-
if
|
248
|
-
|
270
|
+
if @backpressure_monitor
|
271
|
+
@backpressure_monitor.kill
|
272
|
+
@backpressure_monitor = nil
|
273
|
+
end
|
274
|
+
|
275
|
+
if @metrics_aggregator
|
276
|
+
@metrics_aggregator.flush(force: true)
|
277
|
+
@metrics_aggregator.kill
|
278
|
+
@metrics_aggregator = nil
|
249
279
|
end
|
250
280
|
|
251
|
-
|
252
|
-
|
281
|
+
if client = get_current_client
|
282
|
+
client.flush
|
283
|
+
|
284
|
+
if client.configuration.include_local_variables
|
285
|
+
exception_locals_tp.disable
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
@background_worker.shutdown
|
290
|
+
|
291
|
+
MUTEX.synchronize do
|
292
|
+
@main_hub = nil
|
293
|
+
Thread.current.thread_variable_set(THREAD_LOCAL, nil)
|
294
|
+
end
|
253
295
|
end
|
254
296
|
|
255
297
|
# Returns true if the SDK is initialized.
|
@@ -276,6 +318,9 @@ module Sentry
|
|
276
318
|
#
|
277
319
|
# @return [Hub]
|
278
320
|
def get_main_hub
|
321
|
+
MUTEX.synchronize { @main_hub }
|
322
|
+
rescue ThreadError
|
323
|
+
# In some rare cases this may be called in a trap context so we need to handle it gracefully
|
279
324
|
@main_hub
|
280
325
|
end
|
281
326
|
|
@@ -430,6 +475,41 @@ module Sentry
|
|
430
475
|
get_current_hub.capture_event(event)
|
431
476
|
end
|
432
477
|
|
478
|
+
# Captures a check-in and sends it to Sentry via the currently active hub.
|
479
|
+
#
|
480
|
+
# @param slug [String] identifier of this monitor
|
481
|
+
# @param status [Symbol] status of this check-in, one of {CheckInEvent::VALID_STATUSES}
|
482
|
+
#
|
483
|
+
# @param [Hash] options extra check-in options
|
484
|
+
# @option options [String] check_in_id for updating the status of an existing monitor
|
485
|
+
# @option options [Integer] duration seconds elapsed since this monitor started
|
486
|
+
# @option options [Cron::MonitorConfig] monitor_config configuration for this monitor
|
487
|
+
#
|
488
|
+
# @return [String, nil] The {CheckInEvent#check_in_id} to use for later updates on the same slug
|
489
|
+
def capture_check_in(slug, status, **options)
|
490
|
+
return unless initialized?
|
491
|
+
get_current_hub.capture_check_in(slug, status, **options)
|
492
|
+
end
|
493
|
+
|
494
|
+
# Captures a log event and sends it to Sentry via the currently active hub.
|
495
|
+
# This is the underlying method used by the StructuredLogger class.
|
496
|
+
#
|
497
|
+
# @param message [String] the log message
|
498
|
+
# @param [Hash] options Extra log event options
|
499
|
+
# @option options [Symbol] level The log level (:trace, :debug, :info, :warn, :error, :fatal)
|
500
|
+
# @option options [Integer] severity The severity number according to the Sentry Logs Protocol
|
501
|
+
# @option options [Hash] Additional attributes to include with the log
|
502
|
+
#
|
503
|
+
# @example Direct usage (prefer using Sentry.logger instead)
|
504
|
+
# Sentry.capture_log("User logged in", level: :info, user_id: 123)
|
505
|
+
#
|
506
|
+
# @see https://develop.sentry.dev/sdk/telemetry/logs/ Sentry SDK Telemetry Logs Protocol
|
507
|
+
# @return [LogEvent, nil] The created log event or nil if logging is disabled
|
508
|
+
def capture_log(message, **options)
|
509
|
+
return unless initialized?
|
510
|
+
get_current_hub.capture_log_event(message, **options)
|
511
|
+
end
|
512
|
+
|
433
513
|
# Takes or initializes a new Sentry::Transaction and makes a sampling decision for it.
|
434
514
|
#
|
435
515
|
# @return [Transaction, nil]
|
@@ -489,6 +569,88 @@ module Sentry
|
|
489
569
|
Scope.add_global_event_processor(&block)
|
490
570
|
end
|
491
571
|
|
572
|
+
# Returns the traceparent (sentry-trace) header for distributed tracing.
|
573
|
+
# Can be either from the currently active span or the propagation context.
|
574
|
+
#
|
575
|
+
# @return [String, nil]
|
576
|
+
def get_traceparent
|
577
|
+
return nil unless initialized?
|
578
|
+
get_current_hub.get_traceparent
|
579
|
+
end
|
580
|
+
|
581
|
+
# Returns the baggage header for distributed tracing.
|
582
|
+
# Can be either from the currently active span or the propagation context.
|
583
|
+
#
|
584
|
+
# @return [String, nil]
|
585
|
+
def get_baggage
|
586
|
+
return nil unless initialized?
|
587
|
+
get_current_hub.get_baggage
|
588
|
+
end
|
589
|
+
|
590
|
+
# Returns the a Hash containing sentry-trace and baggage.
|
591
|
+
# Can be either from the currently active span or the propagation context.
|
592
|
+
#
|
593
|
+
# @return [Hash, nil]
|
594
|
+
def get_trace_propagation_headers
|
595
|
+
return nil unless initialized?
|
596
|
+
get_current_hub.get_trace_propagation_headers
|
597
|
+
end
|
598
|
+
|
599
|
+
# Returns the a Hash containing sentry-trace and baggage.
|
600
|
+
# Can be either from the currently active span or the propagation context.
|
601
|
+
#
|
602
|
+
# @return [String]
|
603
|
+
def get_trace_propagation_meta
|
604
|
+
return "" unless initialized?
|
605
|
+
get_current_hub.get_trace_propagation_meta
|
606
|
+
end
|
607
|
+
|
608
|
+
# Continue an incoming trace from a rack env like hash.
|
609
|
+
#
|
610
|
+
# @param env [Hash]
|
611
|
+
# @return [Transaction, nil]
|
612
|
+
def continue_trace(env, **options)
|
613
|
+
return nil unless initialized?
|
614
|
+
get_current_hub.continue_trace(env, **options)
|
615
|
+
end
|
616
|
+
|
617
|
+
# Returns the structured logger instance that implements Sentry's SDK telemetry logs protocol.
|
618
|
+
#
|
619
|
+
# This logger is only available when logs are enabled in the configuration.
|
620
|
+
#
|
621
|
+
# @example Enable logs in configuration
|
622
|
+
# Sentry.init do |config|
|
623
|
+
# config.dsn = "YOUR_DSN"
|
624
|
+
# config.enable_logs = true
|
625
|
+
# end
|
626
|
+
#
|
627
|
+
# @example Basic usage
|
628
|
+
# Sentry.logger.info("User logged in successfully", user_id: 123)
|
629
|
+
# Sentry.logger.error("Failed to process payment",
|
630
|
+
# transaction_id: "tx_123",
|
631
|
+
# error_code: "PAYMENT_FAILED"
|
632
|
+
# )
|
633
|
+
#
|
634
|
+
# @see https://develop.sentry.dev/sdk/telemetry/logs/ Sentry SDK Telemetry Logs Protocol
|
635
|
+
#
|
636
|
+
# @return [StructuredLogger, nil] The structured logger instance or nil if logs are disabled
|
637
|
+
def logger
|
638
|
+
@logger ||=
|
639
|
+
if configuration.enable_logs
|
640
|
+
# Initialize the public-facing Structured Logger if logs are enabled
|
641
|
+
# This creates a StructuredLogger instance that implements Sentry's SDK telemetry logs protocol
|
642
|
+
# @see https://develop.sentry.dev/sdk/telemetry/logs/
|
643
|
+
StructuredLogger.new(configuration)
|
644
|
+
else
|
645
|
+
warn <<~STR
|
646
|
+
[sentry] `Sentry.logger` will no longer be used as internal SDK logger when `enable_logs` feature is turned on.
|
647
|
+
Use Sentry.configuration.sdk_logger for SDK-specific logging needs."
|
648
|
+
STR
|
649
|
+
|
650
|
+
configuration.sdk_logger
|
651
|
+
end
|
652
|
+
end
|
653
|
+
|
492
654
|
##### Helpers #####
|
493
655
|
|
494
656
|
# @!visibility private
|
@@ -500,8 +662,8 @@ module Sentry
|
|
500
662
|
end
|
501
663
|
|
502
664
|
# @!visibility private
|
503
|
-
def
|
504
|
-
configuration.
|
665
|
+
def sdk_logger
|
666
|
+
configuration.sdk_logger
|
505
667
|
end
|
506
668
|
|
507
669
|
# @!visibility private
|
@@ -513,6 +675,11 @@ module Sentry
|
|
513
675
|
def utc_now
|
514
676
|
Time.now.utc
|
515
677
|
end
|
678
|
+
|
679
|
+
# @!visibility private
|
680
|
+
def dependency_installed?(name)
|
681
|
+
Object.const_defined?(name)
|
682
|
+
end
|
516
683
|
end
|
517
684
|
end
|
518
685
|
|
@@ -520,3 +687,7 @@ end
|
|
520
687
|
require "sentry/net/http"
|
521
688
|
require "sentry/redis"
|
522
689
|
require "sentry/puma"
|
690
|
+
require "sentry/graphql"
|
691
|
+
require "sentry/faraday"
|
692
|
+
require "sentry/excon"
|
693
|
+
require "sentry/std_lib_logger"
|
data/sentry-ruby-core.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative "lib/sentry/version"
|
2
4
|
|
3
5
|
Gem::Specification.new do |spec|
|
@@ -12,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
12
14
|
spec.platform = Gem::Platform::RUBY
|
13
15
|
spec.required_ruby_version = '>= 2.4'
|
14
16
|
spec.extra_rdoc_files = ["README.md", "LICENSE.txt"]
|
15
|
-
spec.files = `git ls-files | grep -Ev '^(spec|benchmarks|examples)'`.split("\n")
|
17
|
+
spec.files = `git ls-files | grep -Ev '^(spec|benchmarks|examples|\.rubocop\.yml)'`.split("\n")
|
16
18
|
|
17
19
|
spec.metadata["homepage_uri"] = spec.homepage
|
18
20
|
spec.metadata["source_code_uri"] = spec.homepage
|
data/sentry-ruby.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative "lib/sentry/version"
|
2
4
|
|
3
5
|
Gem::Specification.new do |spec|
|
@@ -7,18 +9,25 @@ Gem::Specification.new do |spec|
|
|
7
9
|
spec.description = spec.summary = "A gem that provides a client interface for the Sentry error logger"
|
8
10
|
spec.email = "accounts@sentry.io"
|
9
11
|
spec.license = 'MIT'
|
10
|
-
spec.homepage = "https://github.com/getsentry/sentry-ruby"
|
11
12
|
|
12
13
|
spec.platform = Gem::Platform::RUBY
|
13
14
|
spec.required_ruby_version = '>= 2.4'
|
14
15
|
spec.extra_rdoc_files = ["README.md", "LICENSE.txt"]
|
15
|
-
spec.files = `git ls-files | grep -Ev '^(spec|benchmarks|examples)'`.split("\n")
|
16
|
+
spec.files = `git ls-files | grep -Ev '^(spec|benchmarks|examples|\.rubocop\.yml)'`.split("\n")
|
17
|
+
|
18
|
+
github_root_uri = 'https://github.com/getsentry/sentry-ruby'
|
19
|
+
spec.homepage = "#{github_root_uri}/tree/#{spec.version}/#{spec.name}"
|
16
20
|
|
17
|
-
spec.metadata
|
18
|
-
|
19
|
-
|
21
|
+
spec.metadata = {
|
22
|
+
"homepage_uri" => spec.homepage,
|
23
|
+
"source_code_uri" => spec.homepage,
|
24
|
+
"changelog_uri" => "#{github_root_uri}/blob/#{spec.version}/CHANGELOG.md",
|
25
|
+
"bug_tracker_uri" => "#{github_root_uri}/issues",
|
26
|
+
"documentation_uri" => "http://www.rubydoc.info/gems/#{spec.name}/#{spec.version}"
|
27
|
+
}
|
20
28
|
|
21
29
|
spec.require_paths = ["lib"]
|
22
30
|
|
23
|
-
spec.add_dependency "concurrent-ruby",
|
31
|
+
spec.add_dependency "concurrent-ruby", "~> 1.0", ">= 1.0.2"
|
32
|
+
spec.add_dependency "bigdecimal"
|
24
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.26.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sentry Team
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: concurrent-ruby
|
@@ -30,19 +29,32 @@ dependencies:
|
|
30
29
|
- - ">="
|
31
30
|
- !ruby/object:Gem::Version
|
32
31
|
version: 1.0.2
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: bigdecimal
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
33
46
|
description: A gem that provides a client interface for the Sentry error logger
|
34
47
|
email: accounts@sentry.io
|
35
48
|
executables: []
|
36
49
|
extensions: []
|
37
50
|
extra_rdoc_files:
|
38
|
-
- README.md
|
39
51
|
- LICENSE.txt
|
52
|
+
- README.md
|
40
53
|
files:
|
41
54
|
- ".gitignore"
|
42
55
|
- ".rspec"
|
43
56
|
- ".yardopts"
|
44
57
|
- CHANGELOG.md
|
45
|
-
- CODE_OF_CONDUCT.md
|
46
58
|
- Gemfile
|
47
59
|
- LICENSE.txt
|
48
60
|
- Makefile
|
@@ -51,69 +63,107 @@ files:
|
|
51
63
|
- bin/console
|
52
64
|
- bin/setup
|
53
65
|
- lib/sentry-ruby.rb
|
66
|
+
- lib/sentry/attachment.rb
|
54
67
|
- lib/sentry/background_worker.rb
|
68
|
+
- lib/sentry/backpressure_monitor.rb
|
55
69
|
- lib/sentry/backtrace.rb
|
56
70
|
- lib/sentry/baggage.rb
|
57
71
|
- lib/sentry/breadcrumb.rb
|
58
72
|
- lib/sentry/breadcrumb/sentry_logger.rb
|
59
73
|
- lib/sentry/breadcrumb_buffer.rb
|
74
|
+
- lib/sentry/check_in_event.rb
|
60
75
|
- lib/sentry/client.rb
|
61
76
|
- lib/sentry/configuration.rb
|
62
77
|
- lib/sentry/core_ext/object/deep_dup.rb
|
63
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
|
64
83
|
- lib/sentry/dsn.rb
|
65
84
|
- lib/sentry/envelope.rb
|
85
|
+
- lib/sentry/envelope/item.rb
|
66
86
|
- lib/sentry/error_event.rb
|
67
87
|
- lib/sentry/event.rb
|
68
88
|
- lib/sentry/exceptions.rb
|
89
|
+
- lib/sentry/excon.rb
|
90
|
+
- lib/sentry/excon/middleware.rb
|
91
|
+
- lib/sentry/faraday.rb
|
92
|
+
- lib/sentry/graphql.rb
|
69
93
|
- lib/sentry/hub.rb
|
70
94
|
- lib/sentry/integrable.rb
|
71
95
|
- lib/sentry/interface.rb
|
72
96
|
- lib/sentry/interfaces/exception.rb
|
97
|
+
- lib/sentry/interfaces/mechanism.rb
|
73
98
|
- lib/sentry/interfaces/request.rb
|
74
99
|
- lib/sentry/interfaces/single_exception.rb
|
75
100
|
- lib/sentry/interfaces/stacktrace.rb
|
76
101
|
- lib/sentry/interfaces/stacktrace_builder.rb
|
77
102
|
- lib/sentry/interfaces/threads.rb
|
78
103
|
- lib/sentry/linecache.rb
|
104
|
+
- lib/sentry/log_event.rb
|
105
|
+
- lib/sentry/log_event_buffer.rb
|
79
106
|
- lib/sentry/logger.rb
|
107
|
+
- lib/sentry/metrics.rb
|
108
|
+
- lib/sentry/metrics/aggregator.rb
|
109
|
+
- lib/sentry/metrics/configuration.rb
|
110
|
+
- lib/sentry/metrics/counter_metric.rb
|
111
|
+
- lib/sentry/metrics/distribution_metric.rb
|
112
|
+
- lib/sentry/metrics/gauge_metric.rb
|
113
|
+
- lib/sentry/metrics/local_aggregator.rb
|
114
|
+
- lib/sentry/metrics/metric.rb
|
115
|
+
- lib/sentry/metrics/set_metric.rb
|
116
|
+
- lib/sentry/metrics/timing.rb
|
80
117
|
- lib/sentry/net/http.rb
|
81
118
|
- lib/sentry/profiler.rb
|
119
|
+
- lib/sentry/profiler/helpers.rb
|
120
|
+
- lib/sentry/propagation_context.rb
|
82
121
|
- lib/sentry/puma.rb
|
83
122
|
- lib/sentry/rack.rb
|
84
123
|
- lib/sentry/rack/capture_exceptions.rb
|
85
124
|
- lib/sentry/rake.rb
|
86
125
|
- lib/sentry/redis.rb
|
87
126
|
- lib/sentry/release_detector.rb
|
127
|
+
- lib/sentry/rspec.rb
|
88
128
|
- lib/sentry/scope.rb
|
89
129
|
- lib/sentry/session.rb
|
90
130
|
- lib/sentry/session_flusher.rb
|
91
131
|
- lib/sentry/span.rb
|
132
|
+
- lib/sentry/std_lib_logger.rb
|
133
|
+
- lib/sentry/structured_logger.rb
|
92
134
|
- lib/sentry/test_helper.rb
|
135
|
+
- lib/sentry/threaded_periodic_worker.rb
|
93
136
|
- lib/sentry/transaction.rb
|
94
137
|
- lib/sentry/transaction_event.rb
|
95
138
|
- lib/sentry/transport.rb
|
96
139
|
- lib/sentry/transport/configuration.rb
|
97
140
|
- lib/sentry/transport/dummy_transport.rb
|
98
141
|
- lib/sentry/transport/http_transport.rb
|
142
|
+
- lib/sentry/transport/spotlight_transport.rb
|
99
143
|
- lib/sentry/utils/argument_checking_helper.rb
|
100
144
|
- lib/sentry/utils/custom_inspection.rb
|
101
145
|
- lib/sentry/utils/encoding_helper.rb
|
146
|
+
- lib/sentry/utils/env_helper.rb
|
102
147
|
- lib/sentry/utils/exception_cause_chain.rb
|
148
|
+
- lib/sentry/utils/http_tracing.rb
|
103
149
|
- lib/sentry/utils/logging_helper.rb
|
104
150
|
- lib/sentry/utils/real_ip.rb
|
105
151
|
- lib/sentry/utils/request_id.rb
|
152
|
+
- lib/sentry/utils/uuid.rb
|
153
|
+
- lib/sentry/vernier/output.rb
|
154
|
+
- lib/sentry/vernier/profiler.rb
|
106
155
|
- lib/sentry/version.rb
|
107
156
|
- sentry-ruby-core.gemspec
|
108
157
|
- sentry-ruby.gemspec
|
109
|
-
homepage: https://github.com/getsentry/sentry-ruby
|
158
|
+
homepage: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
|
110
159
|
licenses:
|
111
160
|
- MIT
|
112
161
|
metadata:
|
113
|
-
homepage_uri: https://github.com/getsentry/sentry-ruby
|
114
|
-
source_code_uri: https://github.com/getsentry/sentry-ruby
|
115
|
-
changelog_uri: https://github.com/getsentry/sentry-ruby/blob/
|
116
|
-
|
162
|
+
homepage_uri: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
|
163
|
+
source_code_uri: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
|
164
|
+
changelog_uri: https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md
|
165
|
+
bug_tracker_uri: https://github.com/getsentry/sentry-ruby/issues
|
166
|
+
documentation_uri: http://www.rubydoc.info/gems/sentry-ruby/5.26.0
|
117
167
|
rdoc_options: []
|
118
168
|
require_paths:
|
119
169
|
- lib
|
@@ -128,8 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
178
|
- !ruby/object:Gem::Version
|
129
179
|
version: '0'
|
130
180
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
132
|
-
signing_key:
|
181
|
+
rubygems_version: 3.6.7
|
133
182
|
specification_version: 4
|
134
183
|
summary: A gem that provides a client interface for the Sentry error logger
|
135
184
|
test_files: []
|
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
# Contributor Covenant Code of Conduct
|
2
|
-
|
3
|
-
## Our Pledge
|
4
|
-
|
5
|
-
In the interest of fostering an open and welcoming environment, we as
|
6
|
-
contributors and maintainers pledge to making participation in our project and
|
7
|
-
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
-
size, disability, ethnicity, gender identity and expression, level of experience,
|
9
|
-
nationality, personal appearance, race, religion, or sexual identity and
|
10
|
-
orientation.
|
11
|
-
|
12
|
-
## Our Standards
|
13
|
-
|
14
|
-
Examples of behavior that contributes to creating a positive environment
|
15
|
-
include:
|
16
|
-
|
17
|
-
* Using welcoming and inclusive language
|
18
|
-
* Being respectful of differing viewpoints and experiences
|
19
|
-
* Gracefully accepting constructive criticism
|
20
|
-
* Focusing on what is best for the community
|
21
|
-
* Showing empathy towards other community members
|
22
|
-
|
23
|
-
Examples of unacceptable behavior by participants include:
|
24
|
-
|
25
|
-
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
-
advances
|
27
|
-
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
-
* Public or private harassment
|
29
|
-
* Publishing others' private information, such as a physical or electronic
|
30
|
-
address, without explicit permission
|
31
|
-
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
-
professional setting
|
33
|
-
|
34
|
-
## Our Responsibilities
|
35
|
-
|
36
|
-
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
-
behavior and are expected to take appropriate and fair corrective action in
|
38
|
-
response to any instances of unacceptable behavior.
|
39
|
-
|
40
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
-
threatening, offensive, or harmful.
|
45
|
-
|
46
|
-
## Scope
|
47
|
-
|
48
|
-
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
-
when an individual is representing the project or its community. Examples of
|
50
|
-
representing a project or community include using an official project e-mail
|
51
|
-
address, posting via an official social media account, or acting as an appointed
|
52
|
-
representative at an online or offline event. Representation of a project may be
|
53
|
-
further defined and clarified by project maintainers.
|
54
|
-
|
55
|
-
## Enforcement
|
56
|
-
|
57
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project team at stan001212@gmail.com. All
|
59
|
-
complaints will be reviewed and investigated and will result in a response that
|
60
|
-
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
-
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
-
Further details of specific enforcement policies may be posted separately.
|
63
|
-
|
64
|
-
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
-
faith may face temporary or permanent repercussions as determined by other
|
66
|
-
members of the project's leadership.
|
67
|
-
|
68
|
-
## Attribution
|
69
|
-
|
70
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
-
available at [https://contributor-covenant.org/version/1/4][version]
|
72
|
-
|
73
|
-
[homepage]: https://contributor-covenant.org
|
74
|
-
[version]: https://contributor-covenant.org/version/1/4/
|