callstacking-rails 0.1.9 → 0.1.11
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 +61 -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: 0c21978f17a516a2b6939fc4651bc1bd53ecec1ab12cee52f6c1fb20be5cca42
|
4
|
+
data.tar.gz: 92f446f93cd97b89124d02886a0f4816627204231bc4500428b9416829b06f23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b22c2b9aa191a601dc324488ae02f89759a048c5289d14438db9e99fd69f81e938eb48a24eeffb6605db4ab7b47e0eb62c061829fedf1cbd59e0ee15e00ecf0
|
7
|
+
data.tar.gz: 1114ce3c87cce5353081f21d14683758a676844d3c1f05a1cea9c53df69e1e471e3ab18778ec5473fcfaeb03a981aed4ba1848b7211707b0a12da35ee6788c7b
|
@@ -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,26 @@ 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
|
+
if do_not_track_request?(original_url)
|
145
|
+
traces.clear
|
146
|
+
return
|
147
|
+
end
|
148
|
+
|
129
149
|
create_message(completed_request_message(method, controller, action, format),
|
130
150
|
spans.increment_order_num, @traces)
|
151
|
+
|
131
152
|
send_traces!(trace_id, @traces[0..max_trace_entries])
|
132
153
|
end
|
133
154
|
|
155
|
+
def track_request?(url)
|
156
|
+
!(track_request?(url))
|
157
|
+
end
|
158
|
+
|
159
|
+
def do_not_track_request?(url)
|
160
|
+
url =~ /(\/stylesheets\/|\/javascripts\/|\/css\/|\/js\/|\.js|\.css)/i
|
161
|
+
end
|
162
|
+
|
134
163
|
def return_value(return_val)
|
135
164
|
return_val.inspect
|
136
165
|
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.11
|
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-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|