sentry-ruby-core 4.7.2 → 5.0.2
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/.yardopts +2 -0
- data/Gemfile +6 -2
- data/README.md +9 -7
- data/bin/console +5 -1
- data/lib/sentry/background_worker.rb +33 -3
- data/lib/sentry/backtrace.rb +1 -3
- data/lib/sentry/breadcrumb/sentry_logger.rb +2 -0
- data/lib/sentry/breadcrumb.rb +24 -3
- data/lib/sentry/breadcrumb_buffer.rb +16 -0
- data/lib/sentry/client.rb +49 -3
- data/lib/sentry/configuration.rb +139 -114
- data/lib/sentry/core_ext/object/deep_dup.rb +2 -0
- data/lib/sentry/core_ext/object/duplicable.rb +1 -0
- data/lib/sentry/dsn.rb +2 -0
- data/lib/sentry/envelope.rb +26 -0
- data/lib/sentry/event.rb +58 -17
- data/lib/sentry/exceptions.rb +2 -0
- data/lib/sentry/hub.rb +16 -4
- data/lib/sentry/integrable.rb +2 -0
- data/lib/sentry/interface.rb +3 -10
- data/lib/sentry/interfaces/exception.rb +13 -3
- data/lib/sentry/interfaces/request.rb +34 -18
- data/lib/sentry/interfaces/single_exception.rb +31 -0
- data/lib/sentry/interfaces/stacktrace.rb +14 -0
- data/lib/sentry/interfaces/stacktrace_builder.rb +39 -10
- data/lib/sentry/interfaces/threads.rb +12 -2
- data/lib/sentry/linecache.rb +3 -0
- data/lib/sentry/net/http.rb +52 -64
- data/lib/sentry/rack/capture_exceptions.rb +2 -0
- data/lib/sentry/rack.rb +2 -0
- data/lib/sentry/rake.rb +16 -6
- data/lib/sentry/release_detector.rb +39 -0
- data/lib/sentry/scope.rb +75 -5
- data/lib/sentry/span.rb +84 -8
- data/lib/sentry/transaction.rb +48 -10
- data/lib/sentry/transaction_event.rb +8 -0
- data/lib/sentry/transport/configuration.rb +3 -2
- data/lib/sentry/transport/dummy_transport.rb +2 -0
- data/lib/sentry/transport/http_transport.rb +55 -42
- data/lib/sentry/transport.rb +80 -19
- data/lib/sentry/utils/argument_checking_helper.rb +2 -0
- data/lib/sentry/utils/custom_inspection.rb +14 -0
- data/lib/sentry/utils/exception_cause_chain.rb +10 -10
- data/lib/sentry/utils/logging_helper.rb +6 -4
- data/lib/sentry/utils/real_ip.rb +2 -0
- data/lib/sentry/utils/request_id.rb +2 -0
- data/lib/sentry/version.rb +3 -1
- data/lib/sentry-ruby.rb +142 -29
- data/sentry-ruby-core.gemspec +0 -1
- data/sentry-ruby.gemspec +0 -1
- metadata +6 -16
    
        data/lib/sentry-ruby.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require "English"
         | 
| 2 4 | 
             
            require "forwardable"
         | 
| 3 5 | 
             
            require "time"
         | 
| @@ -16,7 +18,6 @@ require "sentry/transaction" | |
| 16 18 | 
             
            require "sentry/hub"
         | 
| 17 19 | 
             
            require "sentry/background_worker"
         | 
| 18 20 |  | 
| 19 | 
            -
             | 
| 20 21 | 
             
            [
         | 
| 21 22 | 
             
              "sentry/rake",
         | 
| 22 23 | 
             
              "sentry/rack",
         | 
| @@ -37,46 +38,117 @@ module Sentry | |
| 37 38 | 
             
              THREAD_LOCAL = :sentry_hub
         | 
| 38 39 |  | 
| 39 40 | 
             
              class << self
         | 
| 41 | 
            +
                # @!visibility private
         | 
| 42 | 
            +
                def exception_locals_tp
         | 
| 43 | 
            +
                  @exception_locals_tp ||= TracePoint.new(:raise) do |tp|
         | 
| 44 | 
            +
                    exception = tp.raised_exception
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    # don't collect locals again if the exception is re-raised
         | 
| 47 | 
            +
                    next if exception.instance_variable_get(:@sentry_locals)
         | 
| 48 | 
            +
                    next unless tp.binding
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    locals = tp.binding.local_variables.each_with_object({}) do |local, result|
         | 
| 51 | 
            +
                      result[local] = tp.binding.local_variable_get(local)
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    exception.instance_variable_set(:@sentry_locals, locals)
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                # @!attribute [rw] background_worker
         | 
| 59 | 
            +
                #   @return [BackgroundWorker]
         | 
| 40 60 | 
             
                attr_accessor :background_worker
         | 
| 41 61 |  | 
| 42 62 | 
             
                ##### Patch Registration #####
         | 
| 43 | 
            -
             | 
| 63 | 
            +
             | 
| 64 | 
            +
                # @!visibility private
         | 
| 44 65 | 
             
                def register_patch(&block)
         | 
| 45 66 | 
             
                  registered_patches << block
         | 
| 46 67 | 
             
                end
         | 
| 47 68 |  | 
| 69 | 
            +
                # @!visibility private
         | 
| 48 70 | 
             
                def apply_patches(config)
         | 
| 49 71 | 
             
                  registered_patches.each do |patch|
         | 
| 50 72 | 
             
                    patch.call(config)
         | 
| 51 73 | 
             
                  end
         | 
| 52 74 | 
             
                end
         | 
| 53 75 |  | 
| 76 | 
            +
                # @!visibility private
         | 
| 54 77 | 
             
                def registered_patches
         | 
| 55 78 | 
             
                  @registered_patches ||= []
         | 
| 56 79 | 
             
                end
         | 
| 57 80 |  | 
| 58 81 | 
             
                ##### Integrations #####
         | 
| 59 | 
            -
             | 
| 82 | 
            +
             | 
| 60 83 | 
             
                # Returns a hash that contains all the integrations that have been registered to the main SDK.
         | 
| 84 | 
            +
                #
         | 
| 85 | 
            +
                # @return [Hash{String=>Hash}]
         | 
| 61 86 | 
             
                def integrations
         | 
| 62 87 | 
             
                  @integrations ||= {}
         | 
| 63 88 | 
             
                end
         | 
| 64 89 |  | 
| 65 90 | 
             
                # Registers the SDK integration with its name and version.
         | 
| 91 | 
            +
                #
         | 
| 92 | 
            +
                # @param name [String] name of the integration
         | 
| 93 | 
            +
                # @param version [String] version of the integration
         | 
| 66 94 | 
             
                def register_integration(name, version)
         | 
| 67 95 | 
             
                  meta = { name: "sentry.ruby.#{name}", version: version }.freeze
         | 
| 68 96 | 
             
                  integrations[name.to_s] = meta
         | 
| 69 97 | 
             
                end
         | 
| 70 98 |  | 
| 71 99 | 
             
                ##### Method Delegation #####
         | 
| 72 | 
            -
             | 
| 100 | 
            +
             | 
| 73 101 | 
             
                extend Forwardable
         | 
| 74 102 |  | 
| 103 | 
            +
                # @!macro [new] configuration
         | 
| 104 | 
            +
                #   The Configuration object that's used for configuring the client and its transport.
         | 
| 105 | 
            +
                #   @return [Configuration]
         | 
| 106 | 
            +
                # @!macro [new] send_event
         | 
| 107 | 
            +
                #   Sends the event to Sentry.
         | 
| 108 | 
            +
                #   @param event [Event] the event to be sent.
         | 
| 109 | 
            +
                #   @param hint [Hash] the hint data that'll be passed to `before_send` callback.
         | 
| 110 | 
            +
                #   @return [Event]
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                # @!method configuration
         | 
| 113 | 
            +
                #   @!macro configuration
         | 
| 114 | 
            +
                # @!method send_event
         | 
| 115 | 
            +
                #   @!macro send_event
         | 
| 75 116 | 
             
                def_delegators :get_current_client, :configuration, :send_event
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                # @!macro [new] set_extras
         | 
| 119 | 
            +
                #   Updates the scope's extras attribute by merging with the old value.
         | 
| 120 | 
            +
                #   @param extras [Hash]
         | 
| 121 | 
            +
                #   @return [Hash]
         | 
| 122 | 
            +
                # @!macro [new] set_user
         | 
| 123 | 
            +
                #   Sets the scope's user attribute.
         | 
| 124 | 
            +
                #   @param user [Hash]
         | 
| 125 | 
            +
                #   @return [Hash]
         | 
| 126 | 
            +
                # @!macro [new] set_context
         | 
| 127 | 
            +
                #   Adds a new key-value pair to current contexts.
         | 
| 128 | 
            +
                #   @param key [String, Symbol]
         | 
| 129 | 
            +
                #   @param value [Object]
         | 
| 130 | 
            +
                #   @return [Hash]
         | 
| 131 | 
            +
                # @!macro [new] set_tags
         | 
| 132 | 
            +
                #   Updates the scope's tags attribute by merging with the old value.
         | 
| 133 | 
            +
                #   @param tags [Hash]
         | 
| 134 | 
            +
                #   @return [Hash]
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                # @!method set_tags
         | 
| 137 | 
            +
                #   @!macro set_tags
         | 
| 138 | 
            +
                # @!method set_extras
         | 
| 139 | 
            +
                #   @!macro set_extras
         | 
| 140 | 
            +
                # @!method set_user
         | 
| 141 | 
            +
                #   @!macro set_user
         | 
| 142 | 
            +
                # @!method set_context
         | 
| 143 | 
            +
                #   @!macro set_context
         | 
| 76 144 | 
             
                def_delegators :get_current_scope, :set_tags, :set_extras, :set_user, :set_context
         | 
| 77 145 |  | 
| 78 146 | 
             
                ##### Main APIs #####
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                # Initializes the SDK with given configuration.
         | 
| 79 149 | 
             
                #
         | 
| 150 | 
            +
                # @yieldparam config [Configuration]
         | 
| 151 | 
            +
                # @return [void]
         | 
| 80 152 | 
             
                def init(&block)
         | 
| 81 153 | 
             
                  config = Configuration.new
         | 
| 82 154 | 
             
                  yield(config) if block_given?
         | 
| @@ -88,26 +160,46 @@ module Sentry | |
| 88 160 | 
             
                  Thread.current.thread_variable_set(THREAD_LOCAL, hub)
         | 
| 89 161 | 
             
                  @main_hub = hub
         | 
| 90 162 | 
             
                  @background_worker = Sentry::BackgroundWorker.new(config)
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                  if config.capture_exception_frame_locals
         | 
| 165 | 
            +
                    exception_locals_tp.enable
         | 
| 166 | 
            +
                  end
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                  at_exit do
         | 
| 169 | 
            +
                    @background_worker.shutdown
         | 
| 170 | 
            +
                  end
         | 
| 171 | 
            +
                end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                # Returns true if the SDK is initialized.
         | 
| 174 | 
            +
                #
         | 
| 175 | 
            +
                # @return [Boolean]
         | 
| 176 | 
            +
                def initialized?
         | 
| 177 | 
            +
                  !!get_main_hub
         | 
| 91 178 | 
             
                end
         | 
| 92 179 |  | 
| 93 180 | 
             
                # Returns an uri for security policy reporting that's generated from the given DSN
         | 
| 94 181 | 
             
                # (To learn more about security policy reporting: https://docs.sentry.io/product/security-policy-reporting/)
         | 
| 95 182 | 
             
                #
         | 
| 96 183 | 
             
                # It returns nil if
         | 
| 184 | 
            +
                # - The SDK is not initialized yet.
         | 
| 185 | 
            +
                # - The DSN is not provided or is invalid.
         | 
| 97 186 | 
             
                #
         | 
| 98 | 
            -
                #  | 
| 99 | 
            -
                # 2. The DSN is not provided or is invalid.
         | 
| 187 | 
            +
                # @return [String, nil]
         | 
| 100 188 | 
             
                def csp_report_uri
         | 
| 101 189 | 
             
                  return unless initialized?
         | 
| 102 190 | 
             
                  configuration.csp_report_uri
         | 
| 103 191 | 
             
                end
         | 
| 104 192 |  | 
| 105 193 | 
             
                # Returns the main thread's active hub.
         | 
| 194 | 
            +
                #
         | 
| 195 | 
            +
                # @return [Hub]
         | 
| 106 196 | 
             
                def get_main_hub
         | 
| 107 197 | 
             
                  @main_hub
         | 
| 108 198 | 
             
                end
         | 
| 109 199 |  | 
| 110 200 | 
             
                # Takes an instance of Sentry::Breadcrumb and stores it to the current active scope.
         | 
| 201 | 
            +
                #
         | 
| 202 | 
            +
                # @return [Breadcrumb, nil]
         | 
| 111 203 | 
             
                def add_breadcrumb(breadcrumb, **options)
         | 
| 112 204 | 
             
                  get_current_hub&.add_breadcrumb(breadcrumb, **options)
         | 
| 113 205 | 
             
                end
         | 
| @@ -115,6 +207,8 @@ module Sentry | |
| 115 207 | 
             
                # Returns the current active hub.
         | 
| 116 208 | 
             
                # If the current thread doesn't have an active hub, it will clone the main thread's active hub,
         | 
| 117 209 | 
             
                # stores it in the current thread, and then returns it.
         | 
| 210 | 
            +
                #
         | 
| 211 | 
            +
                # @return [Hub]
         | 
| 118 212 | 
             
                def get_current_hub
         | 
| 119 213 | 
             
                  # we need to assign a hub to the current thread if it doesn't have one yet
         | 
| 120 214 | 
             
                  #
         | 
| @@ -125,85 +219,105 @@ module Sentry | |
| 125 219 | 
             
                end
         | 
| 126 220 |  | 
| 127 221 | 
             
                # Returns the current active client.
         | 
| 222 | 
            +
                # @return [Client, nil]
         | 
| 128 223 | 
             
                def get_current_client
         | 
| 129 224 | 
             
                  get_current_hub&.current_client
         | 
| 130 225 | 
             
                end
         | 
| 131 226 |  | 
| 132 227 | 
             
                # Returns the current active scope.
         | 
| 228 | 
            +
                #
         | 
| 229 | 
            +
                # @return [Scope, nil]
         | 
| 133 230 | 
             
                def get_current_scope
         | 
| 134 231 | 
             
                  get_current_hub&.current_scope
         | 
| 135 232 | 
             
                end
         | 
| 136 233 |  | 
| 137 234 | 
             
                # Clones the main thread's active hub and stores it to the current thread.
         | 
| 235 | 
            +
                #
         | 
| 236 | 
            +
                # @return [void]
         | 
| 138 237 | 
             
                def clone_hub_to_current_thread
         | 
| 139 238 | 
             
                  Thread.current.thread_variable_set(THREAD_LOCAL, get_main_hub.clone)
         | 
| 140 239 | 
             
                end
         | 
| 141 240 |  | 
| 142 241 | 
             
                # Takes a block and yields the current active scope.
         | 
| 143 242 | 
             
                #
         | 
| 144 | 
            -
                #  | 
| 145 | 
            -
                # | 
| 146 | 
            -
                # | 
| 147 | 
            -
                # | 
| 243 | 
            +
                # @example
         | 
| 244 | 
            +
                #   Sentry.configure_scope do |scope|
         | 
| 245 | 
            +
                #     scope.set_tags(foo: "bar")
         | 
| 246 | 
            +
                #   end
         | 
| 148 247 | 
             
                #
         | 
| 149 | 
            -
                # | 
| 150 | 
            -
                # ```
         | 
| 248 | 
            +
                #   Sentry.capture_message("test message") # this event will have tags { foo: "bar" }
         | 
| 151 249 | 
             
                #
         | 
| 250 | 
            +
                # @yieldparam scope [Scope]
         | 
| 251 | 
            +
                # @return [void]
         | 
| 152 252 | 
             
                def configure_scope(&block)
         | 
| 153 253 | 
             
                  get_current_hub&.configure_scope(&block)
         | 
| 154 254 | 
             
                end
         | 
| 155 255 |  | 
| 156 256 | 
             
                # Takes a block and yields a temporary scope.
         | 
| 157 257 | 
             
                # The temporary scope will inherit all the attributes from the current active scope and replace it to be the active
         | 
| 158 | 
            -
                # scope inside the block. | 
| 258 | 
            +
                # scope inside the block.
         | 
| 159 259 | 
             
                #
         | 
| 160 | 
            -
                #  | 
| 161 | 
            -
                # | 
| 162 | 
            -
                # | 
| 163 | 
            -
                # | 
| 260 | 
            +
                # @example
         | 
| 261 | 
            +
                #   Sentry.configure_scope do |scope|
         | 
| 262 | 
            +
                #     scope.set_tags(foo: "bar")
         | 
| 263 | 
            +
                #   end
         | 
| 164 264 | 
             
                #
         | 
| 165 | 
            -
                # | 
| 265 | 
            +
                #   Sentry.capture_message("test message") # this event will have tags { foo: "bar" }
         | 
| 166 266 | 
             
                #
         | 
| 167 | 
            -
                # | 
| 168 | 
            -
                # | 
| 169 | 
            -
                # | 
| 170 | 
            -
                # | 
| 267 | 
            +
                #   Sentry.with_scope do |temp_scope|
         | 
| 268 | 
            +
                #     temp_scope.set_tags(foo: "baz")
         | 
| 269 | 
            +
                #     Sentry.capture_message("test message 2") # this event will have tags { foo: "baz" }
         | 
| 270 | 
            +
                #   end
         | 
| 171 271 | 
             
                #
         | 
| 172 | 
            -
                # | 
| 173 | 
            -
                # ```
         | 
| 272 | 
            +
                #   Sentry.capture_message("test message 3") # this event will have tags { foo: "bar" }
         | 
| 174 273 | 
             
                #
         | 
| 274 | 
            +
                # @yieldparam scope [Scope]
         | 
| 275 | 
            +
                # @return [void]
         | 
| 175 276 | 
             
                def with_scope(&block)
         | 
| 176 277 | 
             
                  get_current_hub&.with_scope(&block)
         | 
| 177 278 | 
             
                end
         | 
| 178 279 |  | 
| 179 280 | 
             
                # Takes an exception and reports it to Sentry via the currently active hub.
         | 
| 281 | 
            +
                #
         | 
| 282 | 
            +
                # @yieldparam scope [Scope]
         | 
| 283 | 
            +
                # @return [Event, nil]
         | 
| 180 284 | 
             
                def capture_exception(exception, **options, &block)
         | 
| 181 285 | 
             
                  get_current_hub&.capture_exception(exception, **options, &block)
         | 
| 182 286 | 
             
                end
         | 
| 183 287 |  | 
| 184 288 | 
             
                # Takes a message string and reports it to Sentry via the currently active hub.
         | 
| 289 | 
            +
                #
         | 
| 290 | 
            +
                # @yieldparam scope [Scope]
         | 
| 291 | 
            +
                # @return [Event, nil]
         | 
| 185 292 | 
             
                def capture_message(message, **options, &block)
         | 
| 186 293 | 
             
                  get_current_hub&.capture_message(message, **options, &block)
         | 
| 187 294 | 
             
                end
         | 
| 188 295 |  | 
| 189 296 | 
             
                # Takes an instance of Sentry::Event and dispatches it to the currently active hub.
         | 
| 297 | 
            +
                #
         | 
| 298 | 
            +
                # @return [Event, nil]
         | 
| 190 299 | 
             
                def capture_event(event)
         | 
| 191 300 | 
             
                  get_current_hub&.capture_event(event)
         | 
| 192 301 | 
             
                end
         | 
| 193 302 |  | 
| 194 303 | 
             
                # Takes or initializes a new Sentry::Transaction and makes a sampling decision for it.
         | 
| 304 | 
            +
                #
         | 
| 305 | 
            +
                # @return [Transaction, nil]
         | 
| 195 306 | 
             
                def start_transaction(**options)
         | 
| 196 307 | 
             
                  get_current_hub&.start_transaction(**options)
         | 
| 197 308 | 
             
                end
         | 
| 198 309 |  | 
| 199 310 | 
             
                # Returns the id of the lastly reported Sentry::Event.
         | 
| 311 | 
            +
                #
         | 
| 312 | 
            +
                # @return [String, nil]
         | 
| 200 313 | 
             
                def last_event_id
         | 
| 201 314 | 
             
                  get_current_hub&.last_event_id
         | 
| 202 315 | 
             
                end
         | 
| 203 316 |  | 
| 204 317 |  | 
| 205 318 | 
             
                ##### Helpers #####
         | 
| 206 | 
            -
             | 
| 319 | 
            +
             | 
| 320 | 
            +
                # @!visibility private
         | 
| 207 321 | 
             
                def sys_command(command)
         | 
| 208 322 | 
             
                  result = `#{command} 2>&1` rescue nil
         | 
| 209 323 | 
             
                  return if result.nil? || result.empty? || ($CHILD_STATUS && $CHILD_STATUS.exitstatus != 0)
         | 
| @@ -211,18 +325,17 @@ module Sentry | |
| 211 325 | 
             
                  result.strip
         | 
| 212 326 | 
             
                end
         | 
| 213 327 |  | 
| 214 | 
            -
                 | 
| 215 | 
            -
                  !!@main_hub
         | 
| 216 | 
            -
                end
         | 
| 217 | 
            -
             | 
| 328 | 
            +
                # @!visibility private
         | 
| 218 329 | 
             
                def logger
         | 
| 219 330 | 
             
                  configuration.logger
         | 
| 220 331 | 
             
                end
         | 
| 221 332 |  | 
| 333 | 
            +
                # @!visibility private
         | 
| 222 334 | 
             
                def sdk_meta
         | 
| 223 335 | 
             
                  META
         | 
| 224 336 | 
             
                end
         | 
| 225 337 |  | 
| 338 | 
            +
                # @!visibility private
         | 
| 226 339 | 
             
                def utc_now
         | 
| 227 340 | 
             
                  Time.now.utc
         | 
| 228 341 | 
             
                end
         | 
    
        data/sentry-ruby-core.gemspec
    CHANGED
    
    
    
        data/sentry-ruby.gemspec
    CHANGED
    
    | @@ -18,6 +18,5 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
         | 
| 19 19 |  | 
| 20 20 | 
             
              spec.add_dependency "sentry-ruby-core", Sentry::VERSION
         | 
| 21 | 
            -
              spec.add_dependency "faraday", ">= 1.0"
         | 
| 22 21 | 
             
              spec.add_dependency "concurrent-ruby", '~> 1.0', '>= 1.0.2'
         | 
| 23 22 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,29 +1,15 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sentry-ruby-core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 5.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sentry Team
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-01-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name: faraday
         | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - ">="
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '0'
         | 
| 20 | 
            -
              type: :runtime
         | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            -
                requirements:
         | 
| 24 | 
            -
                - - ">="
         | 
| 25 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '0'
         | 
| 27 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 14 | 
             
              name: concurrent-ruby
         | 
| 29 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -48,6 +34,7 @@ extra_rdoc_files: | |
| 48 34 | 
             
            files:
         | 
| 49 35 | 
             
            - ".gitignore"
         | 
| 50 36 | 
             
            - ".rspec"
         | 
| 37 | 
            +
            - ".yardopts"
         | 
| 51 38 | 
             
            - CHANGELOG.md
         | 
| 52 39 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 53 40 | 
             
            - Gemfile
         | 
| @@ -68,6 +55,7 @@ files: | |
| 68 55 | 
             
            - lib/sentry/core_ext/object/deep_dup.rb
         | 
| 69 56 | 
             
            - lib/sentry/core_ext/object/duplicable.rb
         | 
| 70 57 | 
             
            - lib/sentry/dsn.rb
         | 
| 58 | 
            +
            - lib/sentry/envelope.rb
         | 
| 71 59 | 
             
            - lib/sentry/event.rb
         | 
| 72 60 | 
             
            - lib/sentry/exceptions.rb
         | 
| 73 61 | 
             
            - lib/sentry/hub.rb
         | 
| @@ -85,6 +73,7 @@ files: | |
| 85 73 | 
             
            - lib/sentry/rack.rb
         | 
| 86 74 | 
             
            - lib/sentry/rack/capture_exceptions.rb
         | 
| 87 75 | 
             
            - lib/sentry/rake.rb
         | 
| 76 | 
            +
            - lib/sentry/release_detector.rb
         | 
| 88 77 | 
             
            - lib/sentry/scope.rb
         | 
| 89 78 | 
             
            - lib/sentry/span.rb
         | 
| 90 79 | 
             
            - lib/sentry/transaction.rb
         | 
| @@ -94,6 +83,7 @@ files: | |
| 94 83 | 
             
            - lib/sentry/transport/dummy_transport.rb
         | 
| 95 84 | 
             
            - lib/sentry/transport/http_transport.rb
         | 
| 96 85 | 
             
            - lib/sentry/utils/argument_checking_helper.rb
         | 
| 86 | 
            +
            - lib/sentry/utils/custom_inspection.rb
         | 
| 97 87 | 
             
            - lib/sentry/utils/exception_cause_chain.rb
         | 
| 98 88 | 
             
            - lib/sentry/utils/logging_helper.rb
         | 
| 99 89 | 
             
            - lib/sentry/utils/real_ip.rb
         |