sentry-rails 5.7.0 → 5.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39e565d80c5e7b06167a001ffeb76c3fdb7c572d3ccb8649f7535c3b993b3941
4
- data.tar.gz: 01740ea86056c45a8c0395a3604fe21e1ebf37094ae8fb7b2f4a84f2269e0078
3
+ metadata.gz: 7338e366bfa078e533320c9d9fcac994ca4202104a3a3efb2069644d4ac80e9c
4
+ data.tar.gz: 27b90498fc73e7884ffcdea4733244723fa0e6f8a48d3322f9e7a91b25f8b73b
5
5
  SHA512:
6
- metadata.gz: cd73427c4b45e52aa7472364c63c762879e86255e291333323a01c637ecddaba496a2fe8bdeaca42c2547113268d940c5c37afe9a30d714b5d1c247b1141090a
7
- data.tar.gz: 2cacd8fa7398b013b9bf2b78859485b9097a5eb5c3428b564c2f5e687d006b68ef1b6a927bf4dd62a3eb6193b46f8b5cc35be8530f2142f284e227a0392d569d
6
+ metadata.gz: 7c67ec56cf2d1cd69d8808f7a83ce2af69fea58781fff3c5979bac4005ea077451b9682e6e45b1b8333d9d1b42cb29690dc53cc59b6baef4ba2ef47895bd0bb0
7
+ data.tar.gz: 1ec19c91b4d6e7bd2255c2f73ad12f035d90433a1d36a6fbba4f7ec21cbe6d5694b9ec44690ac22411003ab2e6948b9a56da8ba441123a84daa1d4b477266a51
@@ -20,8 +20,9 @@ module Sentry
20
20
  scope.set_span(transaction) if transaction
21
21
 
22
22
  begin
23
- block.call
23
+ result = block.call
24
24
  finish_transaction(transaction, 200)
25
+ result
25
26
  rescue Exception => e # rubocop:disable Lint/RescueException
26
27
  Sentry::Rails.capture_exception(e)
27
28
  finish_transaction(transaction, 500)
@@ -83,7 +83,6 @@ module Sentry
83
83
  %r(\A/{0,2}#{::Rails.application.config.assets.prefix})
84
84
  end
85
85
  @tracing_subscribers = Set.new([
86
- Sentry::Rails::Tracing::ActionControllerSubscriber,
87
86
  Sentry::Rails::Tracing::ActionViewSubscriber,
88
87
  Sentry::Rails::Tracing::ActiveRecordSubscriber,
89
88
  Sentry::Rails::Tracing::ActiveStorageSubscriber
@@ -2,10 +2,34 @@ module Sentry
2
2
  module Rails
3
3
  module ControllerTransaction
4
4
  def self.included(base)
5
- base.prepend_before_action do |controller|
6
- if Sentry.initialized?
7
- Sentry.get_current_scope.set_transaction_name("#{controller.class}##{controller.action_name}", source: :view)
5
+ base.prepend_around_action(:sentry_around_action)
6
+ end
7
+
8
+ private
9
+
10
+ def sentry_around_action
11
+ if Sentry.initialized?
12
+ transaction_name = "#{self.class}##{action_name}"
13
+ Sentry.get_current_scope.set_transaction_name(transaction_name, source: :view)
14
+ Sentry.with_child_span(op: "view.process_action.action_controller", description: transaction_name) do |child_span|
15
+ if child_span
16
+ begin
17
+ result = yield
18
+ ensure
19
+ child_span.set_http_status(response.status)
20
+ child_span.set_data(:format, request.format)
21
+ child_span.set_data(:method, request.method)
22
+ child_span.set_data(:path, request.path)
23
+ child_span.set_data(:params, request.params)
24
+ end
25
+
26
+ result
27
+ else
28
+ yield
29
+ end
8
30
  end
31
+ else
32
+ yield
9
33
  end
10
34
  end
11
35
  end
@@ -14,6 +14,11 @@ module Sentry
14
14
  tags[:source] = source
15
15
  end
16
16
 
17
+ if context[:tags].is_a?(Hash)
18
+ context = context.dup
19
+ tags.merge!(context.delete(:tags))
20
+ end
21
+
17
22
  Sentry::Rails.capture_exception(error, level: severity, contexts: { "rails.error" => context }, tags: tags)
18
23
  end
19
24
  end
@@ -56,7 +56,9 @@ module Sentry
56
56
 
57
57
  at_exit do
58
58
  # TODO: Add a condition for Rails 7.1 to avoid confliction with https://github.com/rails/rails/pull/44999
59
- Sentry::Rails.capture_exception($ERROR_INFO, tags: { source: "runner" }) if $ERROR_INFO
59
+ if $ERROR_INFO && !($ERROR_INFO.is_a?(SystemExit) && $ERROR_INFO.success?)
60
+ Sentry::Rails.capture_exception($ERROR_INFO, tags: { source: "runner" })
61
+ end
60
62
  end
61
63
  end
62
64
 
@@ -11,6 +11,11 @@ module Sentry
11
11
  OP_NAME = "view.process_action.action_controller".freeze
12
12
 
13
13
  def self.subscribe!
14
+ Sentry.logger.warn <<~MSG
15
+ DEPRECATION WARNING: sentry-rails has changed its approach on controller span recording and #{self.name} is now depreacted.
16
+ Please stop using or referencing #{self.name} as it will be removed in the next major release.
17
+ MSG
18
+
14
19
  subscribe_to_event(EVENT_NAMES) do |event_name, duration, payload|
15
20
  controller = payload[:controller]
16
21
  action = payload[:action]
@@ -14,6 +14,7 @@ module Sentry
14
14
 
15
15
  record_on_current_span(op: SPAN_PREFIX + event_name, start_timestamp: payload[START_TIMESTAMP_NAME], description: payload[:sql], duration: duration) do |span|
16
16
  span.set_data(:connection_id, payload[:connection_id])
17
+ span.set_tag(:cached, true) if payload.fetch(:cached, false) # cached key is only set for hits in the QueryCache, from Rails 5.1
17
18
  end
18
19
  end
19
20
  end
@@ -1,5 +1,5 @@
1
1
  module Sentry
2
2
  module Rails
3
- VERSION = "5.7.0"
3
+ VERSION = "5.8.0"
4
4
  end
5
5
  end
data/sentry-rails.gemspec CHANGED
@@ -23,5 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "railties", ">= 5.0"
26
- spec.add_dependency "sentry-ruby", "~> 5.7.0"
26
+ spec.add_dependency "sentry-ruby", "~> 5.8.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: 5.7.0
4
+ version: 5.8.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-12-01 00:00:00.000000000 Z
11
+ date: 2023-02-06 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: 5.7.0
33
+ version: 5.8.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: 5.7.0
40
+ version: 5.8.0
41
41
  description: A gem that provides Rails integration for the Sentry error logger
42
42
  email: accounts@sentry.io
43
43
  executables: []