sentry-rails 4.3.3 → 4.5.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/.craft.yml +2 -2
- data/CHANGELOG.md +31 -0
- data/lib/sentry/rails/capture_exceptions.rb +7 -6
- data/lib/sentry/rails/configuration.rb +22 -2
- data/lib/sentry/rails/railtie.rb +9 -11
- data/lib/sentry/rails/rescued_exception_interceptor.rb +10 -1
- data/lib/sentry/rails/tracing.rb +9 -8
- data/lib/sentry/rails/tracing/action_controller_subscriber.rb +2 -0
- data/lib/sentry/rails/tracing/action_view_subscriber.rb +2 -0
- data/lib/sentry/rails/tracing/active_record_subscriber.rb +2 -0
- data/lib/sentry/rails/version.rb +1 -1
- data/sentry-rails.gemspec +2 -2
- metadata +6 -7
- data/lib/sentry/rails/overrides/file_handler.rb +0 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5dacfb4f5f23d9d37bef25d05d7c7c6783e6c0e5578e706112ed5e69f9314a54
         | 
| 4 | 
            +
              data.tar.gz: e78a4adf974cc0b9769e8b8bcf9dcf92a920548f5811ec7f4aeeb65d0ca73493
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d79b9b8b316ac7af02a138b81bfa7a303c6f18e4a6edd5f75101b9d6e1ff93ec6ab5290ae163eca98b4dfba89631f9c0710b6405eb3c123bc3fbec94480ee297
         | 
| 7 | 
            +
              data.tar.gz: 4fb8951a0bd157f59b0b969f8b3745873f93c1bb75d1d4824d959330e4c1565613b01c42b7ca92627e3a305c5dc085940b2ca7cc8ae735011dbe483e8e6f1237
         | 
    
        data/.craft.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,36 @@ | |
| 1 1 | 
             
            # Changelog
         | 
| 2 2 |  | 
| 3 | 
            +
            Individual gem's changelog has been deprecated. Please check the [project changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md).
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## 4.4.0
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ### Features
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            - Make tracing subscribers configurable [#1344](https://github.com/getsentry/sentry-ruby/pull/1344) 
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ```ruby
         | 
| 12 | 
            +
            # current default:
         | 
| 13 | 
            +
            # - Sentry::Rails::Tracing::ActionControllerSubscriber
         | 
| 14 | 
            +
            # - Sentry::Rails::Tracing::ActionViewSubscriber
         | 
| 15 | 
            +
            # - Sentry::Rails::Tracing::ActiveRecordSubscriber
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            # you can add a new subscriber
         | 
| 18 | 
            +
            config.rails.tracing_subscribers << MySubscriber
         | 
| 19 | 
            +
            # or replace the set completely
         | 
| 20 | 
            +
            config.rails.tracing_subscribers = [MySubscriber]
         | 
| 21 | 
            +
            ```
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ### Bug Fixes
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            - Report exceptions from the interceptor middleware for exceptions app [#1379](https://github.com/getsentry/sentry-ruby/pull/1379)
         | 
| 26 | 
            +
              - Fixes [#1371](https://github.com/getsentry/sentry-ruby/issues/1371)
         | 
| 27 | 
            +
            - Re-position CaptureExceptions middleware to reduce tracing noise [#1405](https://github.com/getsentry/sentry-ruby/pull/1405) 
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ## 4.3.4
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            - Don't assign Rails.logger if it's not present [#1387](https://github.com/getsentry/sentry-ruby/pull/1387)
         | 
| 32 | 
            +
              - Fixes [#1386](https://github.com/getsentry/sentry-ruby/issues/1386)
         | 
| 33 | 
            +
             | 
| 3 34 | 
             
            ## 4.3.3
         | 
| 4 35 |  | 
| 5 36 | 
             
            - Correctly set the SDK's logger in sentry-rails [#1363](https://github.com/getsentry/sentry-ruby/pull/1363)
         | 
| @@ -12,6 +12,7 @@ module Sentry | |
| 12 12 | 
             
                  private
         | 
| 13 13 |  | 
| 14 14 | 
             
                  def collect_exception(env)
         | 
| 15 | 
            +
                    return nil if env["sentry.already_captured"]
         | 
| 15 16 | 
             
                    super || env["action_dispatch.exception"] || env["sentry.rescued_exception"]
         | 
| 16 17 | 
             
                  end
         | 
| 17 18 |  | 
| @@ -30,15 +31,15 @@ module Sentry | |
| 30 31 | 
             
                  end
         | 
| 31 32 |  | 
| 32 33 | 
             
                  def start_transaction(env, scope)
         | 
| 33 | 
            -
                     | 
| 34 | 
            +
                    sentry_trace = env["HTTP_SENTRY_TRACE"]
         | 
| 35 | 
            +
                    options = { name: scope.transaction_name, op: transaction_op }
         | 
| 34 36 |  | 
| 35 | 
            -
                     | 
| 36 | 
            -
             | 
| 37 | 
            -
                    if @assets_regex && transaction.name.match?(@assets_regex)
         | 
| 38 | 
            -
                      transaction.instance_variable_set(:@sampled, false)
         | 
| 37 | 
            +
                    if @assets_regex && scope.transaction_name.match?(@assets_regex)
         | 
| 38 | 
            +
                      options.merge!(sampled: false)
         | 
| 39 39 | 
             
                    end
         | 
| 40 40 |  | 
| 41 | 
            -
                    transaction
         | 
| 41 | 
            +
                    transaction = Sentry::Transaction.from_sentry_trace(sentry_trace, **options) if sentry_trace
         | 
| 42 | 
            +
                    Sentry.start_transaction(transaction: transaction, **options)
         | 
| 42 43 | 
             
                  end
         | 
| 43 44 | 
             
                end
         | 
| 44 45 | 
             
              end
         | 
| @@ -1,3 +1,7 @@ | |
| 1 | 
            +
            require "sentry/rails/tracing/action_controller_subscriber"
         | 
| 2 | 
            +
            require "sentry/rails/tracing/action_view_subscriber"
         | 
| 3 | 
            +
            require "sentry/rails/tracing/active_record_subscriber"
         | 
| 4 | 
            +
             | 
| 1 5 | 
             
            module Sentry
         | 
| 2 6 | 
             
              class Configuration
         | 
| 3 7 | 
             
                attr_reader :rails
         | 
| @@ -5,7 +9,17 @@ module Sentry | |
| 5 9 | 
             
                add_post_initialization_callback do
         | 
| 6 10 | 
             
                  @rails = Sentry::Rails::Configuration.new
         | 
| 7 11 | 
             
                  @excluded_exceptions = @excluded_exceptions.concat(Sentry::Rails::IGNORE_DEFAULT)
         | 
| 8 | 
            -
             | 
| 12 | 
            +
             | 
| 13 | 
            +
                  if ::Rails.logger
         | 
| 14 | 
            +
                    @logger = ::Rails.logger
         | 
| 15 | 
            +
                  else
         | 
| 16 | 
            +
                    @logger.warn(Sentry::LOGGER_PROGNAME) do
         | 
| 17 | 
            +
                      <<~MSG
         | 
| 18 | 
            +
                      sentry-rails can't detect Rails.logger. it may be caused by misplacement of the SDK initialization code
         | 
| 19 | 
            +
                      please make sure you place the Sentry.init block under the `config/initializers` folder, e.g. `config/initializers/sentry.rb`
         | 
| 20 | 
            +
                      MSG
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
                  end
         | 
| 9 23 | 
             
                end
         | 
| 10 24 | 
             
              end
         | 
| 11 25 |  | 
| @@ -37,10 +51,16 @@ module Sentry | |
| 37 51 | 
             
                  # In those cases, we should skip ActiveJob's reporting to avoid duplicated reports.
         | 
| 38 52 | 
             
                  attr_accessor :skippable_job_adapters
         | 
| 39 53 |  | 
| 54 | 
            +
                  attr_accessor :tracing_subscribers
         | 
| 55 | 
            +
             | 
| 40 56 | 
             
                  def initialize
         | 
| 41 57 | 
             
                    @report_rescued_exceptions = true
         | 
| 42 | 
            -
                    # TODO: Remove this in 4.2.0
         | 
| 43 58 | 
             
                    @skippable_job_adapters = []
         | 
| 59 | 
            +
                    @tracing_subscribers = Set.new([
         | 
| 60 | 
            +
                      Sentry::Rails::Tracing::ActionControllerSubscriber,
         | 
| 61 | 
            +
                      Sentry::Rails::Tracing::ActionViewSubscriber,
         | 
| 62 | 
            +
                      Sentry::Rails::Tracing::ActiveRecordSubscriber
         | 
| 63 | 
            +
                    ])
         | 
| 44 64 | 
             
                  end
         | 
| 45 65 | 
             
                end
         | 
| 46 66 | 
             
              end
         | 
    
        data/lib/sentry/rails/railtie.rb
    CHANGED
    
    | @@ -6,8 +6,8 @@ module Sentry | |
| 6 6 | 
             
              class Railtie < ::Rails::Railtie
         | 
| 7 7 | 
             
                # middlewares can't be injected after initialize
         | 
| 8 8 | 
             
                initializer "sentry.use_rack_middleware" do |app|
         | 
| 9 | 
            -
                  #  | 
| 10 | 
            -
                  app.config.middleware. | 
| 9 | 
            +
                  # placed after all the file-sending middlewares so we can avoid unnecessary transactions
         | 
| 10 | 
            +
                  app.config.middleware.insert_after ActionDispatch::Executor, Sentry::Rails::CaptureExceptions
         | 
| 11 11 | 
             
                  # need to be placed at last to smuggle app exceptions via env
         | 
| 12 12 | 
             
                  app.config.middleware.use(Sentry::Rails::RescuedExceptionInterceptor)
         | 
| 13 13 | 
             
                end
         | 
| @@ -21,12 +21,16 @@ module Sentry | |
| 21 21 | 
             
                  extend_active_job if defined?(ActiveJob)
         | 
| 22 22 | 
             
                  patch_background_worker if defined?(ActiveRecord)
         | 
| 23 23 | 
             
                  override_streaming_reporter if defined?(ActionView)
         | 
| 24 | 
            -
                  override_file_handler if defined?(ActionDispatch) && app.config.public_file_server.enabled
         | 
| 25 24 | 
             
                  setup_backtrace_cleanup_callback
         | 
| 26 25 | 
             
                  inject_breadcrumbs_logger
         | 
| 27 26 | 
             
                  activate_tracing
         | 
| 28 27 | 
             
                end
         | 
| 29 28 |  | 
| 29 | 
            +
                runner do
         | 
| 30 | 
            +
                  next unless Sentry.initialized?
         | 
| 31 | 
            +
                  Sentry.configuration.background_worker_threads = 0
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 30 34 | 
             
                def configure_project_root
         | 
| 31 35 | 
             
                  Sentry.configuration.project_root = ::Rails.root.to_s
         | 
| 32 36 | 
             
                end
         | 
| @@ -79,16 +83,10 @@ module Sentry | |
| 79 83 | 
             
                  end
         | 
| 80 84 | 
             
                end
         | 
| 81 85 |  | 
| 82 | 
            -
                def override_file_handler
         | 
| 83 | 
            -
                  require "sentry/rails/overrides/file_handler"
         | 
| 84 | 
            -
             | 
| 85 | 
            -
                  ActiveSupport.on_load :action_controller do
         | 
| 86 | 
            -
                    ActionDispatch::FileHandler.send(:prepend, Sentry::Rails::Overrides::FileHandler)
         | 
| 87 | 
            -
                  end
         | 
| 88 | 
            -
                end
         | 
| 89 | 
            -
             | 
| 90 86 | 
             
                def activate_tracing
         | 
| 91 87 | 
             
                  if Sentry.configuration.tracing_enabled?
         | 
| 88 | 
            +
                    subscribers = Sentry.configuration.rails.tracing_subscribers
         | 
| 89 | 
            +
                    Sentry::Rails::Tracing.register_subscribers(subscribers)
         | 
| 92 90 | 
             
                    Sentry::Rails::Tracing.subscribe_tracing_events
         | 
| 93 91 | 
             
                    Sentry::Rails::Tracing.patch_active_support_notifications
         | 
| 94 92 | 
             
                  end
         | 
| @@ -20,12 +20,21 @@ module Sentry | |
| 20 20 | 
             
                        copied_env = scope.rack_env.dup
         | 
| 21 21 | 
             
                        copied_env["sentry.original_transaction"] = scope.transaction_name
         | 
| 22 22 | 
             
                        scope.set_rack_env(copied_env)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                        if report_rescued_exceptions?
         | 
| 25 | 
            +
                          Sentry::Rails.capture_exception(e)
         | 
| 26 | 
            +
                          env["sentry.already_captured"] = true
         | 
| 27 | 
            +
                        end
         | 
| 23 28 | 
             
                      end
         | 
| 24 29 |  | 
| 25 | 
            -
                      env["sentry.rescued_exception"] = e if  | 
| 30 | 
            +
                      env["sentry.rescued_exception"] = e if report_rescued_exceptions?
         | 
| 26 31 | 
             
                      raise e
         | 
| 27 32 | 
             
                    end
         | 
| 28 33 | 
             
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  def report_rescued_exceptions?
         | 
| 36 | 
            +
                    Sentry.configuration.rails.report_rescued_exceptions
         | 
| 37 | 
            +
                  end
         | 
| 29 38 | 
             
                end
         | 
| 30 39 | 
             
              end
         | 
| 31 40 | 
             
            end
         | 
    
        data/lib/sentry/rails/tracing.rb
    CHANGED
    
    | @@ -1,18 +1,19 @@ | |
| 1 | 
            -
            require "sentry/rails/tracing/abstract_subscriber"
         | 
| 2 | 
            -
            require "sentry/rails/tracing/active_record_subscriber"
         | 
| 3 | 
            -
            require "sentry/rails/tracing/action_controller_subscriber"
         | 
| 4 | 
            -
            require "sentry/rails/tracing/action_view_subscriber"
         | 
| 5 | 
            -
             | 
| 6 1 | 
             
            module Sentry
         | 
| 7 2 | 
             
              module Rails
         | 
| 8 3 | 
             
                module Tracing
         | 
| 9 | 
            -
                   | 
| 4 | 
            +
                  def self.register_subscribers(subscribers)
         | 
| 5 | 
            +
                    @subscribers = subscribers
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def self.subscribers
         | 
| 9 | 
            +
                    @subscribers
         | 
| 10 | 
            +
                  end
         | 
| 10 11 |  | 
| 11 12 | 
             
                  def self.subscribe_tracing_events
         | 
| 12 13 | 
             
                    # need to avoid duplicated subscription
         | 
| 13 14 | 
             
                    return if @subscribed
         | 
| 14 15 |  | 
| 15 | 
            -
                     | 
| 16 | 
            +
                    subscribers.each(&:subscribe!)
         | 
| 16 17 |  | 
| 17 18 | 
             
                    @subscribed = true
         | 
| 18 19 | 
             
                  end
         | 
| @@ -20,7 +21,7 @@ module Sentry | |
| 20 21 | 
             
                  def self.unsubscribe_tracing_events
         | 
| 21 22 | 
             
                    return unless @subscribed
         | 
| 22 23 |  | 
| 23 | 
            -
                     | 
| 24 | 
            +
                    subscribers.each(&:unsubscribe!)
         | 
| 24 25 |  | 
| 25 26 | 
             
                    @subscribed = false
         | 
| 26 27 | 
             
                  end
         | 
    
        data/lib/sentry/rails/version.rb
    CHANGED
    
    
    
        data/sentry-rails.gemspec
    CHANGED
    
    | @@ -16,12 +16,12 @@ Gem::Specification.new do |spec| | |
| 16 16 |  | 
| 17 17 | 
             
              spec.metadata["homepage_uri"] = spec.homepage
         | 
| 18 18 | 
             
              spec.metadata["source_code_uri"] = spec.homepage
         | 
| 19 | 
            -
              spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/ | 
| 19 | 
            +
              spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
         | 
| 20 20 |  | 
| 21 21 | 
             
              spec.bindir        = "exe"
         | 
| 22 22 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 23 23 | 
             
              spec.require_paths = ["lib"]
         | 
| 24 24 |  | 
| 25 25 | 
             
              spec.add_dependency "railties", ">= 5.0"
         | 
| 26 | 
            -
              spec.add_dependency "sentry-ruby-core", "~> 4. | 
| 26 | 
            +
              spec.add_dependency "sentry-ruby-core", "~> 4.5.0"
         | 
| 27 27 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sentry-rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4. | 
| 4 | 
            +
              version: 4.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sentry Team
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-05-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: railties
         | 
| @@ -30,14 +30,14 @@ dependencies: | |
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: 4. | 
| 33 | 
            +
                    version: 4.5.0
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: 4. | 
| 40 | 
            +
                    version: 4.5.0
         | 
| 41 41 | 
             
            description: A gem that provides Rails integration for the Sentry error logger
         | 
| 42 42 | 
             
            email: accounts@sentry.io
         | 
| 43 43 | 
             
            executables: []
         | 
| @@ -70,7 +70,6 @@ files: | |
| 70 70 | 
             
            - lib/sentry/rails/controller_methods.rb
         | 
| 71 71 | 
             
            - lib/sentry/rails/controller_transaction.rb
         | 
| 72 72 | 
             
            - lib/sentry/rails/engine.rb
         | 
| 73 | 
            -
            - lib/sentry/rails/overrides/file_handler.rb
         | 
| 74 73 | 
             
            - lib/sentry/rails/overrides/streaming_reporter.rb
         | 
| 75 74 | 
             
            - lib/sentry/rails/railtie.rb
         | 
| 76 75 | 
             
            - lib/sentry/rails/rescued_exception_interceptor.rb
         | 
| @@ -87,7 +86,7 @@ licenses: | |
| 87 86 | 
             
            metadata:
         | 
| 88 87 | 
             
              homepage_uri: https://github.com/getsentry/sentry-ruby
         | 
| 89 88 | 
             
              source_code_uri: https://github.com/getsentry/sentry-ruby
         | 
| 90 | 
            -
              changelog_uri: https://github.com/getsentry/sentry-ruby/blob/master/ | 
| 89 | 
            +
              changelog_uri: https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md
         | 
| 91 90 | 
             
            post_install_message: 
         | 
| 92 91 | 
             
            rdoc_options: []
         | 
| 93 92 | 
             
            require_paths:
         | 
| @@ -103,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 103 102 | 
             
                - !ruby/object:Gem::Version
         | 
| 104 103 | 
             
                  version: '0'
         | 
| 105 104 | 
             
            requirements: []
         | 
| 106 | 
            -
            rubygems_version: 3. | 
| 105 | 
            +
            rubygems_version: 3.1.6
         | 
| 107 106 | 
             
            signing_key: 
         | 
| 108 107 | 
             
            specification_version: 4
         | 
| 109 108 | 
             
            summary: A gem that provides Rails integration for the Sentry error logger
         | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            module Sentry
         | 
| 2 | 
            -
              module Rails
         | 
| 3 | 
            -
                module Overrides
         | 
| 4 | 
            -
                  module FileHandler
         | 
| 5 | 
            -
                    def serve(*args)
         | 
| 6 | 
            -
                      if Sentry.initialized? && current_transaction = Sentry.get_current_scope.span
         | 
| 7 | 
            -
                        # we don't want to expose a setter for @sampled just for this case
         | 
| 8 | 
            -
                        current_transaction.instance_variable_set(:@sampled, false)
         | 
| 9 | 
            -
                      end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                      super
         | 
| 12 | 
            -
                    end
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
            end
         |