sentry-rails 4.8.3 → 4.9.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/Gemfile +8 -2
- data/lib/sentry/rails/action_cable.rb +90 -0
- data/lib/sentry/rails/railtie.rb +13 -0
- data/lib/sentry/rails/version.rb +1 -1
- data/sentry-rails.gemspec +1 -1
- metadata +5 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8c7102e219c8ea6e6921580e0f652dc5298fd4b436639824b92c3ed11f1f7ebb
         | 
| 4 | 
            +
              data.tar.gz: 81b4f1c263508ee2deedb06a14704a695e2807254d34773c3fd41a1827497e8e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 33c87f90cd6533322a1d178ca0a6c9b79ea1d823f498f7bdf6ff2a262b1a62d4bec14a6ca3225dee51b516d4767831ada9eca0942c3eba001c109d53712fc963
         | 
| 7 | 
            +
              data.tar.gz: 59a10e73ea3fdb8b82c6b7943ad90275ce3a6d940493f982be9212a356a873401ee6eba358e07870101be59144205ce6c22c81ca4b27c1075cded1fab1aa9668
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -6,17 +6,23 @@ gem "sentry-ruby", path: "../sentry-ruby" | |
| 6 6 |  | 
| 7 7 | 
             
            rails_version = ENV["RAILS_VERSION"]
         | 
| 8 8 | 
             
            rails_version = "6.1.0" if rails_version.nil?
         | 
| 9 | 
            +
            rails_version = Gem::Version.new(rails_version)
         | 
| 9 10 |  | 
| 10 11 | 
             
            gem 'activerecord-jdbcmysql-adapter', platform: :jruby
         | 
| 11 12 | 
             
            gem "jdbc-sqlite3", platform: :jruby
         | 
| 12 13 |  | 
| 13 | 
            -
            if rails_version | 
| 14 | 
            +
            if rails_version < Gem::Version.new("6.0.0")
         | 
| 14 15 | 
             
              gem "sqlite3", "~> 1.3.0", platform: :ruby
         | 
| 15 16 | 
             
            else
         | 
| 16 17 | 
             
              gem "sqlite3", platform: :ruby
         | 
| 17 18 | 
             
            end
         | 
| 18 19 |  | 
| 19 | 
            -
             | 
| 20 | 
            +
            if rails_version >= Gem::Version.new("7.0.0")
         | 
| 21 | 
            +
              gem "rails", github: "rails/rails", branch: "7-0-stable"
         | 
| 22 | 
            +
            else
         | 
| 23 | 
            +
              gem "rails", "~> #{rails_version}"
         | 
| 24 | 
            +
            end
         | 
| 25 | 
            +
             | 
| 20 26 | 
             
            gem "sprockets-rails"
         | 
| 21 27 |  | 
| 22 28 | 
             
            gem "sidekiq"
         | 
| @@ -0,0 +1,90 @@ | |
| 1 | 
            +
            module Sentry
         | 
| 2 | 
            +
              module Rails
         | 
| 3 | 
            +
                module ActionCableExtensions
         | 
| 4 | 
            +
                  class ErrorHandler
         | 
| 5 | 
            +
                    class << self
         | 
| 6 | 
            +
                      def capture(env, transaction_name:, extra_context: nil, &block)
         | 
| 7 | 
            +
                        Sentry.with_scope do |scope|
         | 
| 8 | 
            +
                          scope.set_rack_env(env)
         | 
| 9 | 
            +
                          scope.set_context("action_cable", extra_context) if extra_context
         | 
| 10 | 
            +
                          scope.set_transaction_name(transaction_name)
         | 
| 11 | 
            +
                          transaction = start_transaction(env, scope.transaction_name)
         | 
| 12 | 
            +
                          scope.set_span(transaction) if transaction
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                          begin
         | 
| 15 | 
            +
                            block.call
         | 
| 16 | 
            +
                            finish_transaction(transaction, 200)
         | 
| 17 | 
            +
                          rescue Exception => e # rubocop:disable Lint/RescueException
         | 
| 18 | 
            +
                            Sentry::Rails.capture_exception(e)
         | 
| 19 | 
            +
                            finish_transaction(transaction, 500)
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                            raise
         | 
| 22 | 
            +
                          end
         | 
| 23 | 
            +
                        end
         | 
| 24 | 
            +
                      end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                      def start_transaction(env, transaction_name)
         | 
| 27 | 
            +
                        sentry_trace = env["HTTP_SENTRY_TRACE"]
         | 
| 28 | 
            +
                        options = { name: transaction_name, op: "rails.action_cable".freeze }
         | 
| 29 | 
            +
                        transaction = Sentry::Transaction.from_sentry_trace(sentry_trace, **options) if sentry_trace
         | 
| 30 | 
            +
                        Sentry.start_transaction(transaction: transaction, **options)
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                      def finish_transaction(transaction, status_code)
         | 
| 34 | 
            +
                        return unless transaction
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                        transaction.set_http_status(status_code)
         | 
| 37 | 
            +
                        transaction.finish
         | 
| 38 | 
            +
                      end
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  module Connection
         | 
| 43 | 
            +
                    private
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    def handle_open
         | 
| 46 | 
            +
                      ErrorHandler.capture(env, transaction_name: "#{self.class.name}#connect") do
         | 
| 47 | 
            +
                        super
         | 
| 48 | 
            +
                      end
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    def handle_close
         | 
| 52 | 
            +
                      ErrorHandler.capture(env, transaction_name: "#{self.class.name}#disconnect") do
         | 
| 53 | 
            +
                        super
         | 
| 54 | 
            +
                      end
         | 
| 55 | 
            +
                    end
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  module Channel
         | 
| 59 | 
            +
                    module Subscriptions
         | 
| 60 | 
            +
                      def self.included(base)
         | 
| 61 | 
            +
                        base.class_eval do
         | 
| 62 | 
            +
                          set_callback :subscribe, :around, ->(_, block) { sentry_capture(:subscribed, &block) }, prepend: true
         | 
| 63 | 
            +
                          set_callback :unsubscribe, :around, ->(_, block) { sentry_capture(:unsubscribed, &block) }, prepend: true
         | 
| 64 | 
            +
                        end
         | 
| 65 | 
            +
                      end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                      private
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                      def sentry_capture(hook, &block)
         | 
| 70 | 
            +
                        extra_context = { params: params }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                        ErrorHandler.capture(connection.env, transaction_name: "#{self.class.name}##{hook}", extra_context: extra_context, &block)
         | 
| 73 | 
            +
                      end
         | 
| 74 | 
            +
                    end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                    module Actions
         | 
| 77 | 
            +
                      private
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                      def dispatch_action(action, data)
         | 
| 80 | 
            +
                        extra_context = { params: params, data: data }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                        ErrorHandler.capture(connection.env, transaction_name: "#{self.class.name}##{action}", extra_context: extra_context) do
         | 
| 83 | 
            +
                          super
         | 
| 84 | 
            +
                        end
         | 
| 85 | 
            +
                      end
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
              end
         | 
| 90 | 
            +
            end
         | 
    
        data/lib/sentry/rails/railtie.rb
    CHANGED
    
    | @@ -22,6 +22,19 @@ module Sentry | |
| 22 22 | 
             
                  end
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 | 
            +
                initializer "sentry.extend_action_cable", before: :eager_load! do |app|
         | 
| 26 | 
            +
                  ActiveSupport.on_load(:action_cable_connection) do
         | 
| 27 | 
            +
                    require "sentry/rails/action_cable"
         | 
| 28 | 
            +
                    prepend Sentry::Rails::ActionCableExtensions::Connection
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  ActiveSupport.on_load(:action_cable_channel) do
         | 
| 32 | 
            +
                    require "sentry/rails/action_cable"
         | 
| 33 | 
            +
                    include Sentry::Rails::ActionCableExtensions::Channel::Subscriptions
         | 
| 34 | 
            +
                    prepend Sentry::Rails::ActionCableExtensions::Channel::Actions
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 25 38 | 
             
                config.after_initialize do |app|
         | 
| 26 39 | 
             
                  next unless Sentry.initialized?
         | 
| 27 40 |  | 
    
        data/lib/sentry/rails/version.rb
    CHANGED
    
    
    
        data/sentry-rails.gemspec
    CHANGED
    
    
    
        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.9.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: 2022-01- | 
| 11 | 
            +
            date: 2022-01-07 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.9.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.9.0
         | 
| 41 41 | 
             
            description: A gem that provides Rails integration for the Sentry error logger
         | 
| 42 42 | 
             
            email: accounts@sentry.io
         | 
| 43 43 | 
             
            executables: []
         | 
| @@ -60,6 +60,7 @@ files: | |
| 60 60 | 
             
            - bin/setup
         | 
| 61 61 | 
             
            - lib/sentry-rails.rb
         | 
| 62 62 | 
             
            - lib/sentry/rails.rb
         | 
| 63 | 
            +
            - lib/sentry/rails/action_cable.rb
         | 
| 63 64 | 
             
            - lib/sentry/rails/active_job.rb
         | 
| 64 65 | 
             
            - lib/sentry/rails/background_worker.rb
         | 
| 65 66 | 
             
            - lib/sentry/rails/backtrace_cleaner.rb
         |