callstacking-rails 0.1.34 → 0.1.36

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: bce5ce229bc999f78ce49367f9998b29c2e3be93e37d41a2f49b6e8b4f7c5619
4
- data.tar.gz: cb855dd5c05bc5741da264b58b8a791c8e066a9ffc5cb8e20060ed3161acc599
3
+ metadata.gz: 5bec15f7021fd8dc471e7c1c6a1c77809d83ef10f9f8689bc6a77436570eacaa
4
+ data.tar.gz: 2125659cc1c9696fa7d36e7b62fc028d3fc499a6bded81f13f0cd8afd14a79ce
5
5
  SHA512:
6
- metadata.gz: 0fc47250fa0a7fca648f7ec4702a1cb85866876d3fd253dc1f9465f67e5ee0efe19d1e46269634aca52187310c627be99c2930ea01f4f34e4e0424e01e15f938
7
- data.tar.gz: 052a1f6976cbabc885518abe8158079d7f4aa40e0a22b883cfe6e8b8f5168c3370aff3998cfda9e89194c35970723dbffb799e957fca65a21cf6e39e6e0601d3
6
+ metadata.gz: 85c474951aba42deb68dc55e81a3e97c79595deb7820b0c3e7b14a447b7030c450c3d1c170487bf9d84d1094f242f9a024b3c83d16b9524202cd0907b97137d1
7
+ data.tar.gz: b841f58228f06ef87986d1a488cf04c840abace6619b18c90bb4a6c5a1b783524b7d25dd226d5f1f9a08b41d5a67a0eeb13e6e1935aa0fb4248927b3cd6fc653
@@ -73,7 +73,7 @@ module Callstacking
73
73
  true
74
74
  end
75
75
 
76
- def self.stop_tracing(controller)
76
+ def self.stop_tracing(controller, exception)
77
77
  Logger.log("Callstacking::Rails::Engine.stop_tracing")
78
78
 
79
79
  settings.disable!
@@ -86,8 +86,12 @@ module Callstacking
86
86
  end
87
87
  end
88
88
 
89
- trace&.end_trace(controller)
90
-
89
+ trace&.end_trace(controller, exception)
90
+
91
+ lock.synchronize do
92
+ spans[Thread.current.object_id]&.reset
93
+ end
94
+
91
95
  true
92
96
  end
93
97
  end
@@ -4,11 +4,15 @@ module Callstacking
4
4
  module InstrumentHelper
5
5
  extend ActiveSupport::Concern
6
6
  def callstacking_setup
7
+ exception = nil
7
8
  Callstacking::Rails::Engine.start_tracing(self)
8
9
 
9
10
  yield
11
+ rescue Exception => e
12
+ exception = e
13
+ raise e
10
14
  ensure
11
- Callstacking::Rails::Engine.stop_tracing(self)
15
+ Callstacking::Rails::Engine.stop_tracing(self, exception)
12
16
  end
13
17
  end
14
18
  end
@@ -122,7 +122,7 @@ module Callstacking
122
122
 
123
123
  h = param_names.map.with_index do |param, index|
124
124
  next if [:&, :*, :**].include?(param)
125
- [param, args[index]]
125
+ [param, args[index].inspect]
126
126
  end.compact.to_h
127
127
 
128
128
  filter = ::Rails.application.config.filter_parameters
@@ -5,9 +5,7 @@ module Callstacking
5
5
  attr_accessor :call_entry_callback, :call_return_callback
6
6
 
7
7
  def initialize
8
- @nesting_level = -1
9
- @order_num = -1
10
- @previous_entry = nil
8
+ reset
11
9
  end
12
10
 
13
11
  def increment_order_num
@@ -40,6 +38,12 @@ module Callstacking
40
38
  @call_return_callback = block
41
39
  end
42
40
 
41
+ def reset
42
+ @nesting_level = -1
43
+ @order_num = -1
44
+ @previous_entry = nil
45
+ end
46
+
43
47
  private
44
48
  def previous_event(klass, method_name)
45
49
  "#{klass}:#{method_name}"
@@ -5,6 +5,11 @@ require "callstacking/rails/helpers/heads_up_display_helper"
5
5
  module Callstacking
6
6
  module Rails
7
7
  class Trace
8
+ TRACE_CALL_ENTRY = 'TraceCallEntry'
9
+ TRACE_CALL_RETURN = 'TraceCallReturn'
10
+ TRACE_MESSAGE = 'TraceMessage'
11
+ TRACE_EXCEPTION = 'TraceException'
12
+
8
13
  include Callstacking::Rails::Helpers::HeadsUpDisplayHelper
9
14
 
10
15
  attr_accessor :spans, :client, :lock, :traces
@@ -44,16 +49,16 @@ module Callstacking
44
49
  controller.request.headers, controller.request.params, @traces)
45
50
  end
46
51
 
47
- def end_trace(controller)
52
+ def end_trace(controller, exception)
48
53
  return if @trace_id.nil? || @tuid.nil?
49
54
 
50
- complete_request(@trace_id, @tuid,
55
+ complete_request(@trace_id, @tuid, exception,
51
56
  controller.action_name, controller.controller_name,
52
57
  controller.action_name, controller.request.format,
53
58
  controller.request&.original_url,
54
59
  @traces, MAX_TRACE_ENTRIES)
55
60
 
56
- inject_hud(@settings, controller.request, controller.response)
61
+ inject_hud(@settings, controller.request, controller.response) if ::Rails.env.development? || ::Rails.env.test?
57
62
  end
58
63
 
59
64
  def self.trace_log_clear
@@ -87,10 +92,15 @@ module Callstacking
87
92
  "Started request: #{method} #{controller}##{action} as #{format}"
88
93
  end
89
94
 
95
+ def exception_message(exception, method, controller, action, format)
96
+ "#{exception.class} #{exception.message}<br/><br/>" \
97
+ "#{exception.backtrace[0]}".html_safe
98
+ end
99
+
90
100
  def create_call_return(tuid, coupled_callee, nesting_level, order_num, klass, method_name, path, line_no, return_val, traces)
91
101
  lock.synchronize do
92
102
  traces << { tuid: tuid,
93
- type: 'TraceCallReturn',
103
+ type: TRACE_CALL_RETURN,
94
104
  order_num: order_num,
95
105
  nesting_level: nesting_level,
96
106
  local_variables: {},
@@ -109,7 +119,7 @@ module Callstacking
109
119
  def create_call_entry(tuid, nesting_level, order_num, klass, method_name, arguments, path, line_no, traces)
110
120
  lock.synchronize do
111
121
  traces << { tuid: tuid,
112
- type: 'TraceCallEntry',
122
+ type: TRACE_CALL_ENTRY,
113
123
  order_num: order_num,
114
124
  nesting_level: nesting_level,
115
125
  args: arguments,
@@ -125,10 +135,10 @@ module Callstacking
125
135
  end
126
136
  end
127
137
 
128
- def create_message(tuid, message, order_num, traces)
138
+ def create_message(tuid, message, order_num, traces, type = TRACE_MESSAGE)
129
139
  lock.synchronize do
130
140
  traces << { tuid: tuid,
131
- type: 'TraceMessage',
141
+ type: type,
132
142
  order_num: order_num,
133
143
  nesting_level: 0,
134
144
  message: message,
@@ -182,11 +192,17 @@ module Callstacking
182
192
  url
183
193
  end
184
194
 
185
- def complete_request(trace_id, tuid, method, controller, action, format, original_url, traces, max_trace_entries)
195
+ def complete_request(trace_id, tuid, exception, method, controller,
196
+ action, format, original_url, traces, max_trace_entries)
186
197
  return if do_not_track_request?(original_url, format)
187
198
 
188
- create_message(tuid, completed_request_message(method, controller, action, format),
189
- spans.increment_order_num, traces)
199
+ if exception.present?
200
+ create_message(tuid, exception_message(exception, method, controller, action, format),
201
+ spans.increment_order_num, traces, TRACE_EXCEPTION)
202
+ else
203
+ create_message(tuid, completed_request_message(method, controller, action, format),
204
+ spans.increment_order_num, traces)
205
+ end
190
206
 
191
207
  send_traces!(trace_id, traces[0..max_trace_entries])
192
208
  end
@@ -1,5 +1,5 @@
1
1
  module Callstacking
2
2
  module Rails
3
- VERSION = "0.1.34"
3
+ VERSION = "0.1.36"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: callstacking-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.34
4
+ version: 0.1.36
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Jones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-01 00:00:00.000000000 Z
11
+ date: 2023-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails