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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -1
  3. data/Gemfile +12 -10
  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 +251 -42
  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 +143 -7
  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 +28 -42
  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 +11 -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 +15 -3
  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 -12
  93. 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/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.9.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-04-19 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,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/master/CHANGELOG.md
116
- 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
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.1.6
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/