callstacking-rails 0.1.0 → 0.1.1
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/README.md +2 -2
- data/lib/callstacking/rails/instrument.rb +13 -1
- data/lib/callstacking/rails/settings.rb +1 -1
- data/lib/callstacking/rails/spans.rb +2 -21
- data/lib/callstacking/rails/trace.rb +4 -4
- data/lib/callstacking/rails/traces_helper.rb +2 -2
- data/lib/callstacking/rails/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88265ec5da1ad5e4b040bffdb034f0abb9ff11ba7485839b1c565c774dd612ab
|
4
|
+
data.tar.gz: a21ca44694d8b92e2ecba34523adc33ba1bb72c0e0d1cfdb364ba268fa1107e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99dcba1223722f85f50fb89200c408d81720028b3f7e6b9291d4a73dae5e1449a9c2152ff6baf07f890be0d718b0df1038f3c5d4b2011cce101cb56742ace0ee
|
7
|
+
data.tar.gz: a545aec1de30363f71eeb4831424d65f2841292c894a50ba7d1859f820306307e2f66ec4f5a5ccade2bda14b439f1a24b40df3d57de9ede4aaa34a75bc243f5d
|
data/README.md
CHANGED
@@ -74,12 +74,12 @@ Opens a browser window to register as a callstacking.com user.
|
|
74
74
|
> callstacking-rails setup
|
75
75
|
|
76
76
|
Interactively prompts you for your callstacking.com username/password.
|
77
|
-
Stores auth details in `~/.callstacking
|
77
|
+
Stores auth details in `~/.callstacking`.
|
78
78
|
|
79
79
|
You can have multiple environments.
|
80
80
|
The default is `development`.
|
81
81
|
|
82
|
-
The `development:` section in the `~/.callstacking
|
82
|
+
The `development:` section in the `~/.callstacking` config contains your credentials.
|
83
83
|
|
84
84
|
By setting the RAILS_ENV environment you can maintain multiple settings.
|
85
85
|
|
@@ -36,7 +36,9 @@ module Callstacking
|
|
36
36
|
spans = tmp_module.instance_variable_get(:@spans)
|
37
37
|
klass = tmp_module.instance_variable_get(:@klass)
|
38
38
|
|
39
|
-
|
39
|
+
arguments = Callstacking::Rails::Instrument.arguments_for(method(__method__).super_method, args)
|
40
|
+
|
41
|
+
spans.call_entry(klass, method_name, arguments, p || path, l || line_no)
|
40
42
|
return_val = super(*args, &block)
|
41
43
|
spans.call_return(klass, method_name, p || path, l || line_no, return_val)
|
42
44
|
|
@@ -68,6 +70,16 @@ module Callstacking
|
|
68
70
|
relevant.each { |method| instrument_method(method, application_level: application_level) }
|
69
71
|
end
|
70
72
|
|
73
|
+
def self.arguments_for(m, args)
|
74
|
+
param_names = m.parameters&.map(&:last)
|
75
|
+
return {} if param_names.nil?
|
76
|
+
|
77
|
+
param_names.map.with_index do |param, index|
|
78
|
+
next if [:&, :*, :**].include?(param)
|
79
|
+
[param, args[index]]
|
80
|
+
end.compact.to_h
|
81
|
+
end
|
82
|
+
|
71
83
|
private
|
72
84
|
|
73
85
|
def all_methods
|
@@ -20,10 +20,10 @@ module Callstacking
|
|
20
20
|
@nesting_level
|
21
21
|
end
|
22
22
|
|
23
|
-
def call_entry(klass, method_name, path, line_no)
|
23
|
+
def call_entry(klass, method_name, arguments, path, line_no)
|
24
24
|
@nesting_level+=1
|
25
25
|
@previous_entry = previous_event(klass, method_name)
|
26
|
-
@call_entry_callback.call(@nesting_level, increment_order_num, klass, method_name, path, line_no)
|
26
|
+
@call_entry_callback.call(@nesting_level, increment_order_num, klass, method_name, arguments, path, line_no)
|
27
27
|
end
|
28
28
|
|
29
29
|
def call_return(klass, method_name, path, line_no, return_val)
|
@@ -40,25 +40,6 @@ module Callstacking
|
|
40
40
|
@call_return_callback = block
|
41
41
|
end
|
42
42
|
|
43
|
-
def arguments_for(trace)
|
44
|
-
param_names = trace&.parameters&.map(&:last)
|
45
|
-
return {} if param_names.nil?
|
46
|
-
|
47
|
-
param_names.map do |param|
|
48
|
-
next if [:&, :*, :**].include?(param)
|
49
|
-
[param, trace.binding.local_variable_get(param.to_s)]
|
50
|
-
end.compact.to_h
|
51
|
-
end
|
52
|
-
|
53
|
-
def locals_for(trace)
|
54
|
-
local_names = trace&.binding&.local_variables
|
55
|
-
return {} if local_names.nil?
|
56
|
-
|
57
|
-
local_names.map do |local|
|
58
|
-
[local, trace.binding.local_variable_get(local)]
|
59
|
-
end.to_h
|
60
|
-
end
|
61
|
-
|
62
43
|
private
|
63
44
|
def previous_event(klass, method_name)
|
64
45
|
"#{klass}:#{method_name}"
|
@@ -41,8 +41,8 @@ module Callstacking
|
|
41
41
|
create_message(start_request_message(payload), spans.increment_order_num, @traces)
|
42
42
|
end
|
43
43
|
|
44
|
-
@spans.on_call_entry do |nesting_level, order_num, klass, method_name, path, line_no|
|
45
|
-
create_call_entry(nesting_level, order_num, klass, method_name, path, line_no, @traces)
|
44
|
+
@spans.on_call_entry do |nesting_level, order_num, klass, method_name, arguments, path, line_no|
|
45
|
+
create_call_entry(nesting_level, order_num, klass, method_name, arguments, path, line_no, @traces)
|
46
46
|
end
|
47
47
|
|
48
48
|
@spans.on_call_return do |coupled_callee, nesting_level, order_num, klass, method_name, path, line_no, return_val|
|
@@ -82,13 +82,13 @@ module Callstacking
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
-
def create_call_entry(nesting_level, order_num, klass, method_name, path, line_no, traces)
|
85
|
+
def create_call_entry(nesting_level, order_num, klass, method_name, arguments, path, line_no, traces)
|
86
86
|
lock.synchronize do
|
87
87
|
traces << { trace_entry: { trace_entryable_type: 'TraceCallEntry',
|
88
88
|
order_num: order_num,
|
89
89
|
nesting_level: nesting_level,
|
90
90
|
trace_entryable_attributes: {
|
91
|
-
|
91
|
+
args: arguments,
|
92
92
|
klass: klass_name(klass),
|
93
93
|
line_number: line_no,
|
94
94
|
path: path,
|
@@ -15,11 +15,11 @@ module Callstacking
|
|
15
15
|
|
16
16
|
body = []
|
17
17
|
body << (content_tag( :div, data: { turbo:false },
|
18
|
-
style: '
|
18
|
+
style: 'top: 50%; right: 10px; font-size: 24pt; :hover{text-shadow: 1px 1px 2px #000000};
|
19
19
|
padding: 0px; position: fixed; height: 50px; width: 40px; cursor: pointer;',
|
20
20
|
onclick: 'document.getElementById("callstacking-debugger").style.display = "unset";
|
21
21
|
document.getElementById("callstacking-close").style.display = "unset";') do
|
22
|
-
"
|
22
|
+
"💥"
|
23
23
|
end)
|
24
24
|
|
25
25
|
body << (content_tag(:iframe, src: frame_url, id: 'callstacking-debugger', data: { turbo:false },
|
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.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Jones
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -52,7 +52,8 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description:
|
55
|
+
description: Quickly visualize which methods call which, their parameters, and return
|
56
|
+
values.
|
56
57
|
email:
|
57
58
|
- jim.jones1@gmail.com
|
58
59
|
executables:
|
@@ -111,5 +112,6 @@ requirements: []
|
|
111
112
|
rubygems_version: 3.3.7
|
112
113
|
signing_key:
|
113
114
|
specification_version: 4
|
114
|
-
summary:
|
115
|
+
summary: Quickly visualize which methods call which, their parameters, and return
|
116
|
+
values.
|
115
117
|
test_files: []
|