raygun-apm-rails 1.0.17 → 1.0.18

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: ee2d3d33cf58103bfd89b13c63cab3519fdade4b62c2201945296ca0b5ce3ff9
4
- data.tar.gz: '0439759d0352745d3a1493eab01f39160a1ead9b82d09ed19ed652c3df1fc88d'
3
+ metadata.gz: 715626f8f9976fa6af04de7e06b2977e1dc261f48e50e27b01edd4772af08be9
4
+ data.tar.gz: a25c402d9238165a0664047bfe15a5074e3c4c7088ccb28af2fddb5cdacc09b8
5
5
  SHA512:
6
- metadata.gz: 3f05e571751ed3bb771041d9d67ba805d556338d56bb6b65c6142f86102e4c9a52938005642381562e461d75f7250ccd7e808927189ced46c3b8882e487750ac
7
- data.tar.gz: 6f59d3c5523145e84917412dde20ae1a289a338a97af072cbbf2e2590f8afdf04052a59f409ff882ac959d134a7f13bce70cde005e41f6130352aced3cc681cf
6
+ metadata.gz: 6d86b7b853a306a61b9993f417abce9a861b2c41ac2a68129e003b2e4d9f5e7cd90d1dfb4027bd1ceee5ed9cc2df98ef652e9abf98045cd13169cc95061dcb28
7
+ data.tar.gz: 610ff0610f8b9176fa747b97c9bf6e6db312c8fc9df06e4e87cd55e94c16939a9e6c11d4889a3c0561984e4dd90ae565b48e98a636a9da9fcef912d06565e55e
@@ -0,0 +1,10 @@
1
+ = Changelog
2
+
3
+ == 1.0.18 (March 15, 2020)
4
+
5
+ * Ensure a better experience with raygun4ruby with only Raygun::track_exception whitelisted
6
+ * Remove the warning on a HTTP IN event with an exception payload - spams STDOUT and already confused some testers
7
+ * Ensure errors raised during request exception always result in a fully wrapped trace with a 500 status
8
+ * Wrap the exceptional HTTP IN error handler in a fake user code method too to get past the agent gate for that
9
+ * Prefer the singleton interface on the Tracer
10
+ * Blacklist HTTParty
@@ -67,7 +67,13 @@ module Raygun
67
67
  Nokogiri
68
68
  Loofah
69
69
  WebConsole
70
+ HTTParty
71
+ Raygun::Breadcrumbs
72
+ Raygun::Configuration
73
+ Raygun::config
70
74
  +Raygun::Apm::Rails::Middleware::Ruby_APM_profiler_trace
75
+ +Raygun::Apm::Rails::Middleware::Ruby_APM_request_error
76
+ +Raygun::track_exception
71
77
  }
72
78
  end
73
79
  end
@@ -17,16 +17,23 @@ module Raygun
17
17
  def instrument(env)
18
18
  res = nil
19
19
  # Can be nil if we had a fatal error
20
- @tracer ||= init_tracer
20
+ @tracer ||= Raygun::Apm::Tracer.instance || init_tracer
21
21
  if @tracer
22
22
  # For the exceptional HTTP IN handler
23
23
  @request_started = @tracer.now
24
- Thread.current.thread_variable_set(:_raygun_apm_tracer, @tracer)
25
24
  @tracer.start_trace
26
25
  end
27
- res = Ruby_APM_profiler_trace{ @app.call(env) }
26
+ exception = nil
27
+ res = nil
28
+ Ruby_APM_profiler_trace do
29
+ begin
30
+ res = @app.call(env)
31
+ rescue
32
+ exceptional_http_in_handler(env, 500)
33
+ end
34
+ end
28
35
  if (status = res.first) >= 400 && status < 600
29
- exceptional_http_in_handler(env, status)
36
+ Ruby_APM_request_error { exceptional_http_in_handler(env, status) }
30
37
  end
31
38
  # Can be nil if we had a fatal error
32
39
  @tracer.end_trace if @tracer
@@ -36,11 +43,10 @@ module Raygun
36
43
  end
37
44
 
38
45
  def init_tracer
39
- return @tracer if @tracer
40
- @tracer = Raygun::Apm::Tracer.new
41
- @tracer.udp_sink!
42
- @tracer.process_started
43
- ObjectSpace.define_finalizer(self, self.class.finalize(@tracer))
46
+ tracer = Raygun::Apm::Tracer.new
47
+ tracer.udp_sink!
48
+ tracer.process_started
49
+ ObjectSpace.define_finalizer(self, self.class.finalize(tracer))
44
50
 
45
51
  @http_in_subscriber = ActiveSupport::Notifications.subscribe('process_action.action_controller') do |*args|
46
52
  http_in_handler(args)
@@ -51,7 +57,7 @@ module Raygun
51
57
  end
52
58
 
53
59
  GC.stress = true if ENV['RAYGUN_STRESS_GC']
54
- @tracer
60
+ Raygun::Apm::Tracer.instance = tracer
55
61
  # If any fatal errors on init, shutdown the tracer
56
62
  rescue Raygun::Apm::FatalError => e
57
63
  raygun_shutdown_handler(e)
@@ -64,15 +70,13 @@ module Raygun
64
70
  ActiveSupport::Notifications.unsubscribe(@sql_subscriber)
65
71
  warn "[Raygun APM] notification hooks unsubscribed"
66
72
  # Let the GC clean up the sink thread through the finalizer below
67
- @tracer = nil
68
- Thread.current.thread_variable_set(:_raygun_apm_tracer, nil)
73
+ @tracer = Raygun::Apm::Tracer.instance = nil
69
74
  raise(exception) unless (Raygun::Apm::FatalError === exception)
70
75
  end
71
76
 
72
77
  def http_in_handler(args)
73
78
  notification = ActiveSupport::Notifications::Event.new *args
74
79
  if notification.payload[:exception]
75
- warn "[Raygun APM] exception in HTTP IN event: #{notification.payload[:exception]}"
76
80
  return
77
81
  end
78
82
  req = Rack::Request.new notification.payload[:headers].env
@@ -153,6 +157,10 @@ module Raygun
153
157
  yield
154
158
  end
155
159
 
160
+ def Ruby_APM_request_error
161
+ yield
162
+ end
163
+
156
164
  def self.finalize(tracer)
157
165
  proc {tracer.process_ended}
158
166
  end
@@ -1,7 +1,7 @@
1
1
  module Raygun
2
2
  module Apm
3
3
  module Rails
4
- VERSION = "1.0.17"
4
+ VERSION = "1.0.18"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raygun-apm-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.17
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raygun
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-03-09 00:00:00.000000000 Z
12
+ date: 2020-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: raygun-apm
@@ -76,6 +76,7 @@ extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
78
  - ".gitignore"
79
+ - CHANGELOG.rdoc
79
80
  - Gemfile
80
81
  - Gemfile.lock
81
82
  - README.rdoc
@@ -105,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
106
  - !ruby/object:Gem::Version
106
107
  version: '0'
107
108
  requirements: []
108
- rubygems_version: 3.1.2
109
+ rubygems_version: 3.0.6
109
110
  signing_key:
110
111
  specification_version: 4
111
112
  summary: Raygun application performance monitoring for Rails