raygun-apm-rails 1.0.40 → 1.0.58

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1affdff67622a0393fa805c03dec12b95a7e96121b912bde7435cefb9d793bb7
4
- data.tar.gz: c610f30aeed993d831b154ec53a94f1bd0599990b149f97494bb83234dc332d5
3
+ metadata.gz: '0960b482d47c77c0448eecb23722f1fb206327b7de89eb2db02e7cc90a51efd4'
4
+ data.tar.gz: 01537cda34b2134a80fd2eb7fc2d314707756877b17baca4e4818861a7d5e3d6
5
5
  SHA512:
6
- metadata.gz: 4617790e7b5f6c70c282b63cd35ec6297b7f72e27029d6943ba7b1abb2547176d9ee6ab316d2eb2feb64aaff1a5192cb5515d56277353d5f9085482a1844815b
7
- data.tar.gz: db12daeb9f737e308a61a446e683f286b190d1fcea17547d74cbf0ebd1cda9f4a2ca935a86528cd71043a394586e9d062036a590dd56e51453d52e0075914db5
6
+ metadata.gz: beb414f861e3b325489e5f14a2527d2dac0507106e1bcf187c1d66f60c9a335ec8001dfae20e70873a9c242d47d7926d93367bef231d133e12371062bcbc051b
7
+ data.tar.gz: 3a81267f8f9fdd3d796c49db6e0a14d10e3b80050d814bd751da1af858d2d387b0f6ec39022ac4e726fc801d8b6590919ef115e28742fb61a0c7e233b742d4fd
@@ -2,8 +2,10 @@ module Raygun
2
2
  module Apm
3
3
  module Rails
4
4
  class Middleware
5
+ POSTGRESQLSTRING = "postgresql"
5
6
  def initialize(app)
6
7
  @app = app
8
+ @mutex = Mutex.new
7
9
  @tracer = nil
8
10
  end
9
11
 
@@ -15,9 +17,14 @@ module Raygun
15
17
  private
16
18
 
17
19
  def instrument(env)
18
- res = nil
19
- # Can be nil if we had a fatal error
20
- @tracer = Raygun::Apm::Tracer.instance || init_tracer
20
+ # Ignore asset requests
21
+ if (env['REQUEST_PATH'] || env['REQUEST_URI']).match(/^\/assets\//)
22
+ return @app.call(env)
23
+ end
24
+ @mutex.synchronize do
25
+ # Can be nil if we had a fatal error
26
+ @tracer = Raygun::Apm::Tracer.instance || init_tracer
27
+ end
21
28
  if @tracer
22
29
  # For the exceptional HTTP IN handler
23
30
  @request_started = @tracer.now
@@ -29,15 +36,15 @@ module Raygun
29
36
  begin
30
37
  res = @app.call(env)
31
38
  rescue => e
32
- crash_report_exception(e)
33
- exceptional_http_in_handler(env, 500) if @tracer
39
+ crash_report_exception(e, env)
40
+ exceptional_http_in_handler(env) if @tracer
34
41
  exception = e
35
42
  end
36
43
  end
37
44
  # Can be nil if we had a fatal error
38
45
  if @tracer
39
- @tracer.end_trace
40
46
  @tracer.diagnostics if ENV['PROTON_DIAGNOSTICS']
47
+ @tracer.end_trace
41
48
  end
42
49
  raise exception if exception
43
50
  res
@@ -96,7 +103,7 @@ module Raygun
96
103
  event[:pid] = Process.pid
97
104
  event[:url] = url
98
105
  event[:verb] = verb
99
- event[:status] = notification.payload[:status]
106
+ event[:status] = notification.payload[:status] || notification.payload[:headers]["action_controller.instance"].status
100
107
  # XXX constant milliseconds to microseconds
101
108
  event[:duration] = notification.duration * 1000
102
109
  event[:timestamp] = @tracer.now
@@ -108,13 +115,13 @@ module Raygun
108
115
  end
109
116
 
110
117
  # For middleware chain halts that does not trigger 'process_action.action_controller'
111
- def exceptional_http_in_handler(env, status)
118
+ def exceptional_http_in_handler(env)
112
119
  req = Rack::Request.new env
113
120
  event = http_in_event
114
121
  event[:pid] = Process.pid
115
122
  event[:url] = req.url
116
123
  event[:verb] = req.request_method
117
- event[:status] = status
124
+ event[:status] = 500
118
125
  event[:duration] = @tracer.now - @request_started
119
126
  event[:timestamp] = @tracer.now
120
127
  event[:tid] = @tracer.get_thread_id(Thread.current)
@@ -141,7 +148,7 @@ module Raygun
141
148
 
142
149
  # XXX this is hacky
143
150
  if config = connection.instance_variable_get('@config')
144
- event[:provider] = config[:adapter]
151
+ event[:provider] = get_sql_provider_name(config)
145
152
  event[:host] = config[:host]
146
153
  event[:database] = config[:database]
147
154
  end
@@ -156,6 +163,14 @@ module Raygun
156
163
  raygun_shutdown_handler(e)
157
164
  end
158
165
 
166
+ #This function adjusts the provider name for PostgreSQL to Postgres because all other Raygun profilers use Postgres and this will keep the UI consistent across supported languages
167
+ def get_sql_provider_name(config)
168
+ if config[:adapter] == POSTGRESQLSTRING
169
+ return "postgres"
170
+ end
171
+ config[:adapter]
172
+ end
173
+
159
174
  def sql_event
160
175
  @sql_event ||= Raygun::Apm::Event::Sql.new
161
176
  end
@@ -168,9 +183,10 @@ module Raygun
168
183
  yield
169
184
  end
170
185
 
171
- def crash_report_exception(exception)
186
+ def crash_report_exception(exception, env = {})
172
187
  if Raygun::Apm::Rails.raygun4ruby?
173
- Raygun.track_exception(exception, correlation_id: exception.instance_variable_get(:@__raygun_correlation_id))
188
+ env.merge!(correlation_id: exception.instance_variable_get(:@__raygun_correlation_id))
189
+ Raygun.track_exception(exception, env)
174
190
  end
175
191
  end
176
192
 
@@ -1,7 +1,7 @@
1
1
  module Raygun
2
2
  module Apm
3
3
  module Rails
4
- VERSION = "1.0.40"
4
+ VERSION = "1.0.58"
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.40
4
+ version: 1.0.58
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-09-11 00:00:00.000000000 Z
12
+ date: 2021-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: raygun-apm