diff --git a/CHANGELOG.md b/CHANGELOG.md index a9dc18876..a11809b02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - Fix Vernier profiler not stopping when already stopped [#2429](https://github.com/getsentry/sentry-ruby/pull/2429) - Fix `send_default_pii` handling in rails controller spans [#2443](https://github.com/getsentry/sentry-ruby/pull/2443) - Fixes [#2438](https://github.com/getsentry/sentry-ruby/issues/2438) +- Fix `RescuedExceptionInterceptor` to handle an empty configuration [#2428](https://github.com/getsentry/sentry-ruby/pull/2428) ## 5.21.0 diff --git a/sentry-rails/lib/sentry/rails/rescued_exception_interceptor.rb b/sentry-rails/lib/sentry/rails/rescued_exception_interceptor.rb index 43cb69db1..757377298 100644 --- a/sentry-rails/lib/sentry/rails/rescued_exception_interceptor.rb +++ b/sentry-rails/lib/sentry/rails/rescued_exception_interceptor.rb @@ -19,7 +19,16 @@ def call(env) end def report_rescued_exceptions? - Sentry.configuration.rails.report_rescued_exceptions + # In rare edge cases, `Sentry.configuration` might be `nil` here. + # Hence, we use a safe navigation and fallback to a reasonable default + # of `true` in case the configuration couldn't be loaded. + # See https://github.com/getsentry/sentry-ruby/issues/2386 + report_rescued_exceptions = Sentry.configuration&.rails&.report_rescued_exceptions + return report_rescued_exceptions unless report_rescued_exceptions.nil? + + # `true` is the default for `report_rescued_exceptions`, as specified in + # `sentry-rails/lib/sentry/rails/configuration.rb`. + true end end end