sentry-ruby 5.10.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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -1
  3. data/Gemfile +12 -13
  4. data/README.md +26 -11
  5. data/Rakefile +9 -11
  6. data/bin/console +2 -0
  7. data/lib/sentry/attachment.rb +40 -0
  8. data/lib/sentry/background_worker.rb +11 -5
  9. data/lib/sentry/backpressure_monitor.rb +45 -0
  10. data/lib/sentry/backtrace.rb +12 -9
  11. data/lib/sentry/baggage.rb +7 -7
  12. data/lib/sentry/breadcrumb/sentry_logger.rb +6 -6
  13. data/lib/sentry/breadcrumb.rb +13 -6
  14. data/lib/sentry/check_in_event.rb +61 -0
  15. data/lib/sentry/client.rb +214 -25
  16. data/lib/sentry/configuration.rb +221 -38
  17. data/lib/sentry/core_ext/object/deep_dup.rb +1 -1
  18. data/lib/sentry/cron/configuration.rb +23 -0
  19. data/lib/sentry/cron/monitor_check_ins.rb +77 -0
  20. data/lib/sentry/cron/monitor_config.rb +53 -0
  21. data/lib/sentry/cron/monitor_schedule.rb +42 -0
  22. data/lib/sentry/dsn.rb +4 -4
  23. data/lib/sentry/envelope/item.rb +88 -0
  24. data/lib/sentry/envelope.rb +2 -68
  25. data/lib/sentry/error_event.rb +2 -2
  26. data/lib/sentry/event.rb +28 -47
  27. data/lib/sentry/excon/middleware.rb +77 -0
  28. data/lib/sentry/excon.rb +10 -0
  29. data/lib/sentry/faraday.rb +77 -0
  30. data/lib/sentry/graphql.rb +9 -0
  31. data/lib/sentry/hub.rb +138 -6
  32. data/lib/sentry/integrable.rb +10 -0
  33. data/lib/sentry/interface.rb +1 -0
  34. data/lib/sentry/interfaces/exception.rb +5 -3
  35. data/lib/sentry/interfaces/mechanism.rb +20 -0
  36. data/lib/sentry/interfaces/request.rb +8 -8
  37. data/lib/sentry/interfaces/single_exception.rb +13 -9
  38. data/lib/sentry/interfaces/stacktrace.rb +3 -1
  39. data/lib/sentry/interfaces/stacktrace_builder.rb +23 -2
  40. data/lib/sentry/linecache.rb +3 -3
  41. data/lib/sentry/log_event.rb +206 -0
  42. data/lib/sentry/log_event_buffer.rb +75 -0
  43. data/lib/sentry/logger.rb +1 -1
  44. data/lib/sentry/metrics/aggregator.rb +248 -0
  45. data/lib/sentry/metrics/configuration.rb +47 -0
  46. data/lib/sentry/metrics/counter_metric.rb +25 -0
  47. data/lib/sentry/metrics/distribution_metric.rb +25 -0
  48. data/lib/sentry/metrics/gauge_metric.rb +35 -0
  49. data/lib/sentry/metrics/local_aggregator.rb +53 -0
  50. data/lib/sentry/metrics/metric.rb +19 -0
  51. data/lib/sentry/metrics/set_metric.rb +28 -0
  52. data/lib/sentry/metrics/timing.rb +51 -0
  53. data/lib/sentry/metrics.rb +56 -0
  54. data/lib/sentry/net/http.rb +27 -44
  55. data/lib/sentry/profiler/helpers.rb +46 -0
  56. data/lib/sentry/profiler.rb +41 -60
  57. data/lib/sentry/propagation_context.rb +135 -0
  58. data/lib/sentry/puma.rb +12 -5
  59. data/lib/sentry/rack/capture_exceptions.rb +17 -8
  60. data/lib/sentry/rack.rb +2 -2
  61. data/lib/sentry/rake.rb +4 -15
  62. data/lib/sentry/redis.rb +10 -4
  63. data/lib/sentry/release_detector.rb +5 -5
  64. data/lib/sentry/rspec.rb +91 -0
  65. data/lib/sentry/scope.rb +75 -39
  66. data/lib/sentry/session.rb +2 -2
  67. data/lib/sentry/session_flusher.rb +15 -43
  68. data/lib/sentry/span.rb +92 -8
  69. data/lib/sentry/std_lib_logger.rb +50 -0
  70. data/lib/sentry/structured_logger.rb +138 -0
  71. data/lib/sentry/test_helper.rb +42 -13
  72. data/lib/sentry/threaded_periodic_worker.rb +39 -0
  73. data/lib/sentry/transaction.rb +44 -43
  74. data/lib/sentry/transaction_event.rb +10 -6
  75. data/lib/sentry/transport/configuration.rb +73 -1
  76. data/lib/sentry/transport/http_transport.rb +71 -41
  77. data/lib/sentry/transport/spotlight_transport.rb +50 -0
  78. data/lib/sentry/transport.rb +53 -49
  79. data/lib/sentry/utils/argument_checking_helper.rb +12 -0
  80. data/lib/sentry/utils/env_helper.rb +21 -0
  81. data/lib/sentry/utils/http_tracing.rb +74 -0
  82. data/lib/sentry/utils/logging_helper.rb +10 -7
  83. data/lib/sentry/utils/real_ip.rb +2 -2
  84. data/lib/sentry/utils/request_id.rb +1 -1
  85. data/lib/sentry/utils/uuid.rb +13 -0
  86. data/lib/sentry/vernier/output.rb +89 -0
  87. data/lib/sentry/vernier/profiler.rb +132 -0
  88. data/lib/sentry/version.rb +1 -1
  89. data/lib/sentry-ruby.rb +206 -35
  90. data/sentry-ruby-core.gemspec +3 -1
  91. data/sentry-ruby.gemspec +15 -6
  92. metadata +61 -11
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/logger"
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".freeze
45
+ LOGGER_PROGNAME = "sentry"
40
46
 
41
- SENTRY_TRACE_HEADER_NAME = "sentry-trace".freeze
47
+ SENTRY_TRACE_HEADER_NAME = "sentry-trace"
42
48
 
43
- BAGGAGE_HEADER_NAME = "baggage".freeze
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, nil]
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 << block
107
+ registered_patches[key] = block
83
108
  else
84
- registered_patches << proc do
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
- logger.warn(LOGGER_PROGNAME) do
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
- @session_flusher = if config.auto_session_tracking
220
- Sentry::SessionFlusher.new(config, client)
221
- else
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 configuration&.include_local_variables
248
- exception_locals_tp.disable
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
- @main_hub = nil
252
- Thread.current.thread_variable_set(THREAD_LOCAL, nil)
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 logger
504
- configuration.logger
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"
@@ -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["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = spec.homepage
19
- spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
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", '~> 1.0', '>= 1.0.2'
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.10.0
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: 2023-07-04 00:00:00.000000000 Z
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,13 +29,27 @@ 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"
@@ -50,69 +63,107 @@ files:
50
63
  - bin/console
51
64
  - bin/setup
52
65
  - lib/sentry-ruby.rb
66
+ - lib/sentry/attachment.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
85
+ - lib/sentry/envelope/item.rb
65
86
  - lib/sentry/error_event.rb
66
87
  - lib/sentry/event.rb
67
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
68
93
  - lib/sentry/hub.rb
69
94
  - lib/sentry/integrable.rb
70
95
  - lib/sentry/interface.rb
71
96
  - lib/sentry/interfaces/exception.rb
97
+ - lib/sentry/interfaces/mechanism.rb
72
98
  - lib/sentry/interfaces/request.rb
73
99
  - lib/sentry/interfaces/single_exception.rb
74
100
  - lib/sentry/interfaces/stacktrace.rb
75
101
  - lib/sentry/interfaces/stacktrace_builder.rb
76
102
  - lib/sentry/interfaces/threads.rb
77
103
  - lib/sentry/linecache.rb
104
+ - lib/sentry/log_event.rb
105
+ - lib/sentry/log_event_buffer.rb
78
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
79
117
  - lib/sentry/net/http.rb
80
118
  - lib/sentry/profiler.rb
119
+ - lib/sentry/profiler/helpers.rb
120
+ - lib/sentry/propagation_context.rb
81
121
  - lib/sentry/puma.rb
82
122
  - lib/sentry/rack.rb
83
123
  - lib/sentry/rack/capture_exceptions.rb
84
124
  - lib/sentry/rake.rb
85
125
  - lib/sentry/redis.rb
86
126
  - lib/sentry/release_detector.rb
127
+ - lib/sentry/rspec.rb
87
128
  - lib/sentry/scope.rb
88
129
  - lib/sentry/session.rb
89
130
  - lib/sentry/session_flusher.rb
90
131
  - lib/sentry/span.rb
132
+ - lib/sentry/std_lib_logger.rb
133
+ - lib/sentry/structured_logger.rb
91
134
  - lib/sentry/test_helper.rb
135
+ - lib/sentry/threaded_periodic_worker.rb
92
136
  - lib/sentry/transaction.rb
93
137
  - lib/sentry/transaction_event.rb
94
138
  - lib/sentry/transport.rb
95
139
  - lib/sentry/transport/configuration.rb
96
140
  - lib/sentry/transport/dummy_transport.rb
97
141
  - lib/sentry/transport/http_transport.rb
142
+ - lib/sentry/transport/spotlight_transport.rb
98
143
  - lib/sentry/utils/argument_checking_helper.rb
99
144
  - lib/sentry/utils/custom_inspection.rb
100
145
  - lib/sentry/utils/encoding_helper.rb
146
+ - lib/sentry/utils/env_helper.rb
101
147
  - lib/sentry/utils/exception_cause_chain.rb
148
+ - lib/sentry/utils/http_tracing.rb
102
149
  - lib/sentry/utils/logging_helper.rb
103
150
  - lib/sentry/utils/real_ip.rb
104
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
105
155
  - lib/sentry/version.rb
106
156
  - sentry-ruby-core.gemspec
107
157
  - sentry-ruby.gemspec
108
- homepage: https://github.com/getsentry/sentry-ruby
158
+ homepage: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
109
159
  licenses:
110
160
  - MIT
111
161
  metadata:
112
- homepage_uri: https://github.com/getsentry/sentry-ruby
113
- source_code_uri: https://github.com/getsentry/sentry-ruby
114
- changelog_uri: https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md
115
- post_install_message:
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
116
167
  rdoc_options: []
117
168
  require_paths:
118
169
  - lib
@@ -127,8 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
178
  - !ruby/object:Gem::Version
128
179
  version: '0'
129
180
  requirements: []
130
- rubygems_version: 3.1.6
131
- signing_key:
181
+ rubygems_version: 3.6.7
132
182
  specification_version: 4
133
183
  summary: A gem that provides a client interface for the Sentry error logger
134
184
  test_files: []