callstacking-rails 0.1.9 → 0.1.10
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 +4 -4
- data/lib/callstacking/rails/instrument.rb +2 -0
- data/lib/callstacking/rails/trace.rb +58 -32
- data/lib/callstacking/rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87abdbb303ead93a3e9675bb51a39d42141b5a9d4a27237a254e9e670171f399
|
4
|
+
data.tar.gz: 8d6aef27102d88c0b847c14616390dbb61ac8da2fd90af506e8a5cd0de12c6f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64489808b6674f2651f5a0abea52cf7c0e9053b1d3e47b1504febda71f21b29363152cfc3751fb65a31f3c61700e428ec1aedf2b7efbd6d41d0aa7efd4294ae3
|
7
|
+
data.tar.gz: 256bc96c37f4761e4bf03edfaa222dd044e38d589f518b844c1509fe9dce70bd5551b2e312d767a6e3eca60f65bbe862226d516bbf00e09d036b9b83b1d7cc6c
|
@@ -29,8 +29,9 @@ module Callstacking
|
|
29
29
|
|
30
30
|
ActiveSupport::Notifications.subscribe("start_processing.action_controller") do |name, start, finish, id, payload|
|
31
31
|
trace_id, max_trace_entries = start_request(payload[:request]&.request_id, payload[:method], payload[:controller],
|
32
|
-
|
33
|
-
|
32
|
+
payload[:action], payload[:format], ::Rails.root,
|
33
|
+
payload[:request]&.original_url,
|
34
|
+
payload[:headers], payload[:params])
|
34
35
|
end
|
35
36
|
|
36
37
|
@spans.on_call_entry do |nesting_level, order_num, klass, method_name, arguments, path, line_no|
|
@@ -44,6 +45,7 @@ module Callstacking
|
|
44
45
|
ActiveSupport::Notifications.subscribe("process_action.action_controller") do |name, start, finish, id, payload|
|
45
46
|
complete_request(payload[:method], payload[:controller],
|
46
47
|
payload[:action], payload[:format],
|
48
|
+
payload[:request]&.original_url,
|
47
49
|
trace_id, max_trace_entries)
|
48
50
|
end
|
49
51
|
end
|
@@ -60,44 +62,55 @@ module Callstacking
|
|
60
62
|
|
61
63
|
def create_call_return(coupled_callee, nesting_level, order_num, klass, method_name, path, line_no, return_val, traces)
|
62
64
|
lock.synchronize do
|
63
|
-
traces << {
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
65
|
+
traces << { type: 'TraceCallReturn',
|
66
|
+
order_num: order_num,
|
67
|
+
nesting_level: nesting_level,
|
68
|
+
local_variables: {},
|
69
|
+
args: {},
|
70
|
+
klass: klass_name(klass),
|
71
|
+
line_number: line_no,
|
72
|
+
path: path,
|
73
|
+
method_name: method_name,
|
74
|
+
return_value: return_value(return_val),
|
75
|
+
coupled_callee: coupled_callee,
|
76
|
+
message: nil,
|
77
|
+
}
|
75
78
|
end
|
76
79
|
end
|
77
80
|
|
78
81
|
def create_call_entry(nesting_level, order_num, klass, method_name, arguments, path, line_no, traces)
|
79
82
|
lock.synchronize do
|
80
|
-
traces << {
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
83
|
+
traces << { type: 'TraceCallEntry',
|
84
|
+
order_num: order_num,
|
85
|
+
nesting_level: nesting_level,
|
86
|
+
args: arguments,
|
87
|
+
klass: klass_name(klass),
|
88
|
+
line_number: line_no,
|
89
|
+
path: path,
|
90
|
+
method_name: method_name,
|
91
|
+
return_value: nil,
|
92
|
+
coupled_callee: nil,
|
93
|
+
local_variables: {},
|
94
|
+
message: nil,
|
95
|
+
}
|
90
96
|
end
|
91
97
|
end
|
92
98
|
|
93
99
|
def create_message(message, order_num, traces)
|
94
100
|
lock.synchronize do
|
95
|
-
traces << {
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
+
traces << { type: 'TraceMessage',
|
102
|
+
order_num: order_num,
|
103
|
+
nesting_level: 0,
|
104
|
+
message: message,
|
105
|
+
args: {},
|
106
|
+
klass: nil,
|
107
|
+
line_number: nil,
|
108
|
+
path: nil,
|
109
|
+
method_name: nil,
|
110
|
+
return_value: nil,
|
111
|
+
coupled_callee: false,
|
112
|
+
local_variables: {},
|
113
|
+
}
|
101
114
|
end
|
102
115
|
end
|
103
116
|
|
@@ -105,11 +118,13 @@ module Callstacking
|
|
105
118
|
lock.synchronize do
|
106
119
|
return if traces.empty?
|
107
120
|
|
108
|
-
client.upsert(trace_id, {
|
121
|
+
client.upsert(trace_id, { trace_entries: traces })
|
109
122
|
traces.clear
|
110
123
|
end
|
111
124
|
end
|
112
125
|
def start_request(request_id, method, controller, action, format, path, original_url, headers, params)
|
126
|
+
return if do_not_track_request?(original_url)
|
127
|
+
|
113
128
|
request_id = request_id || SecureRandom.uuid
|
114
129
|
Callstacking::Rails::Trace.current_request_id = request_id
|
115
130
|
|
@@ -125,12 +140,23 @@ module Callstacking
|
|
125
140
|
return trace_id, max_trace_entries
|
126
141
|
end
|
127
142
|
|
128
|
-
def complete_request(method, controller, action, format, trace_id, max_trace_entries)
|
143
|
+
def complete_request(method, controller, action, format, original_url, trace_id, max_trace_entries)
|
144
|
+
return if do_not_track_request?(original_url)
|
145
|
+
|
129
146
|
create_message(completed_request_message(method, controller, action, format),
|
130
147
|
spans.increment_order_num, @traces)
|
148
|
+
|
131
149
|
send_traces!(trace_id, @traces[0..max_trace_entries])
|
132
150
|
end
|
133
151
|
|
152
|
+
def track_request?(url)
|
153
|
+
!(track_request?(url))
|
154
|
+
end
|
155
|
+
|
156
|
+
def do_not_track_request?(url)
|
157
|
+
url =~ /(\/stylesheets\/|\/javascripts\/|\/css\/|\/js\/|\.js|\.css)/i
|
158
|
+
end
|
159
|
+
|
134
160
|
def return_value(return_val)
|
135
161
|
return_val.inspect
|
136
162
|
rescue ThreadError
|
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.
|
4
|
+
version: 0.1.10
|
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-01-
|
11
|
+
date: 2023-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|