raygun-apm-rails 0.1.6 → 0.1.7

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: 5bded6633ee12299036cbbc4335ab2d2332375299aa2746c507801791cc0b886
4
- data.tar.gz: 5e4e99d585dfe5e1b970c4857088ad2fec161f7935677e9b3545b947b7164ee6
3
+ metadata.gz: a2d31d0ad976f35bdac2a42c3ae4b0da985291ab2a36e60982de8e04e2d34e7c
4
+ data.tar.gz: 582ec4542445a59adc1f33e76353c667153cc5e7af889a8f34a55213ef6e4564
5
5
  SHA512:
6
- metadata.gz: 18a5b450114214cfb18be5de0091e5cf93ef8c59e0f5d37103d3e641b650e6855fac6c59668170b0b6b3888aa6d51d4f5c466912e050331c0f10f7ef7c1c2610
7
- data.tar.gz: 2439fa20850563b3be76f8ffab6c362250d452388cd309c8f5d6a0cd62261a56c9620a022a60bda54db405be97a5e41af6e8f2153206b2982d22a6ec068c23a4
6
+ metadata.gz: 757a3a0f926195c155aabaea9c29ee716b6d408d1c401440db9348fde89209c4bf919284752d715674ecd5b163b3f330706156aa215d2c8d5a167741a468bd41
7
+ data.tar.gz: e390eee50d733103fef5b025f6f8710689bf4235e956800ecd73791355e318452799eb43d87be4e825c11e1cc6768fa2c23b781614439c3a9d7d89053d112df7
@@ -29,7 +29,10 @@ module Raygun
29
29
  def instrument(env)
30
30
  res = nil
31
31
  # Can be nil if we had a fatal error
32
- @tracer.start_trace if @tracer
32
+ if @tracer
33
+ Thread.current[:_raygun_apm_tracer] = @tracer
34
+ @tracer.start_trace
35
+ end
33
36
  res = @app.call(env)
34
37
  # Can be nil if we had a fatal error
35
38
  @tracer.end_trace if @tracer
@@ -46,7 +49,7 @@ module Raygun
46
49
  # Shutdown the tracepoint if enabled to reduce any overhead and stall emission
47
50
  @tracer.tracepoint.stop if @tracer.tracepoint.enabled?
48
51
  # Let the GC clean up the sink thread through the finalizer below
49
- @tracer = nil
52
+ @tracer = Thread.current[:_raygun_apm_tracer] = nil
50
53
  end
51
54
 
52
55
  def http_in_handler(args)
@@ -56,20 +59,27 @@ module Raygun
56
59
  return
57
60
  end
58
61
  req = Rack::Request.new notification.payload[:headers].env
59
- @http_in_event ||= Raygun::Apm::Event::HttpIn.new
60
- @http_in_event[:url] = req.url
61
- @http_in_event[:verb] = req.request_method
62
- @http_in_event[:status] = notification.payload[:status]
62
+ event = http_in_event
63
+ event[:url] = req.url
64
+ event[:verb] = req.request_method
65
+ event[:status] = notification.payload[:status]
63
66
  # XXX constant milliseconds to microseconds
64
- @http_in_event[:duration] = notification.duration * 1000
65
- @http_in_event[:timestamp] = notification.time.to_f * 1000000
66
- @http_in_event[:pid] = Process.pid
67
- @http_in_event[:tid] = @tracer.get_thread_id(Thread.current)
68
- @tracer.emit(@http_in_event)
67
+ event[:duration] = notification.duration * 1000
68
+ event[:timestamp] = notification.time.to_f * 1000000
69
+ event[:tid] = @tracer.get_thread_id(Thread.current)
70
+ @tracer.emit(event)
69
71
  rescue => e
70
72
  warn "[Raygun APM] error reporting HTTP IN event"
71
73
  end
72
-
74
+
75
+ def http_in_event
76
+ @http_in_event ||= begin
77
+ event = Raygun::Apm::Event::HttpIn.new
78
+ event[:pid] = Process.pid
79
+ event
80
+ end
81
+ end
82
+
73
83
  def sql_handler(args)
74
84
  notification = ActiveSupport::Notifications::Event.new *args
75
85
  connection = if notification.payload[:connection]
@@ -77,26 +87,33 @@ module Raygun
77
87
  else
78
88
  ObjectSpace._id2ref(notification.payload[:connection_id])
79
89
  end
80
- @sql_event ||= Raygun::Apm::Event::Sql.new
81
- @sql_event[:query] = notification.payload[:sql]
90
+ event = sql_event
91
+ event[:query] = notification.payload[:sql]
82
92
 
83
93
  # XXX this is hacky
84
94
  if config = connection.instance_variable_get('@config')
85
- @sql_event[:provider] = config[:adapter]
86
- @sql_event[:host] = config[:host]
87
- @sql_event[:database] = config[:database]
95
+ event[:provider] = config[:adapter]
96
+ event[:host] = config[:host]
97
+ event[:database] = config[:database]
88
98
  end
89
99
 
90
100
  # XXX constant milliseconds to microseconds
91
- @sql_event[:duration] = notification.duration * 1000
92
- @sql_event[:timestamp] = notification.time.to_f * 1000000
93
- @sql_event[:pid] = Process.pid
94
- @sql_event[:tid] = @tracer.get_thread_id(Thread.current)
95
- @tracer.emit(@sql_event)
101
+ event[:duration] = notification.duration * 1000
102
+ event[:timestamp] = notification.time.to_f * 1000000
103
+ event[:tid] = @tracer.get_thread_id(Thread.current)
104
+ @tracer.emit(event)
96
105
  rescue => e
97
106
  warn "[Raygun APM] error reporting SQL event"
98
107
  end
99
-
108
+
109
+ def sql_event
110
+ @sql_event ||= begin
111
+ event = Raygun::Apm::Event::Sql.new
112
+ event[:pid] = Process.pid
113
+ event
114
+ end
115
+ end
116
+
100
117
  def self.finalize(tracer)
101
118
  proc {tracer.process_ended}
102
119
  end
@@ -3,11 +3,14 @@ module Raygun
3
3
  module Rails
4
4
  class Railtie < ::Rails::Railtie
5
5
  initializer "raygun.apm" do |app|
6
+ return if ENV['RAYGUN_SKIP_MIDDLEWARE']
6
7
  require "raygun/apm"
7
8
  require "raygun/apm/rails/middleware"
8
9
  Raygun::Apm::Blacklist.extend_with Raygun::Apm::Rails::BLACKLIST
9
10
  Raygun::Apm::Blacklist.extend_with Raygun::Apm::Rails::BOUNDARY
10
11
  app.middleware.insert_before Rack::Sendfile, Raygun::Apm::Rails::Middleware
12
+ # Explictly enable instrumenting HTTP until a good control API is figured out
13
+ require "raygun/apm/hooks/net_http"
11
14
  end
12
15
  end
13
16
  end
@@ -1,7 +1,7 @@
1
1
  module Raygun
2
2
  module Apm
3
3
  module Rails
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.7"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raygun-apm-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erkki Eilonen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-09 00:00:00.000000000 Z
11
+ date: 2019-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: raygun-apm