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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3aa23402f8e1518b61f61a8e08c4005e770e4ce82224ec41fb4bcb6b95508dd
4
- data.tar.gz: 907f3f6bf310fcd6965385c47962921b2d82bcd4c1f141ceafd9d0e12b2b3ae9
3
+ metadata.gz: 88265ec5da1ad5e4b040bffdb034f0abb9ff11ba7485839b1c565c774dd612ab
4
+ data.tar.gz: a21ca44694d8b92e2ecba34523adc33ba1bb72c0e0d1cfdb364ba268fa1107e0
5
5
  SHA512:
6
- metadata.gz: 8074f647ccc9acd05dd37f00ac690ffce7f3f3d4cb7007c853e671ce43a2837e433500185d0b443403f77e7392bde0d3a9f451e1d830974e73a25c0419950562
7
- data.tar.gz: d54423cf2f7f8e4fe0f42accb36c477463d0642a482ea18f56585a835f9af812d6d4e2211f6a06b863f7850b83fcbd6c1ab5ec9cc351d0481f7896174154f8dc
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-rails`.
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-rails` config contains your credentials.
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
- spans.call_entry(klass, method_name, p || path, l || line_no)
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
@@ -11,7 +11,7 @@ module Callstacking
11
11
  attr_accessor :settings
12
12
  end
13
13
 
14
- SETTINGS_FILE = "#{Dir.home}/.callstacking-rails"
14
+ SETTINGS_FILE = "#{Dir.home}/.callstacking"
15
15
  PRODUCTION_URL = "https://callstacking.com"
16
16
 
17
17
  def url
@@ -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
- #args: arguments_for(t),
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: 'background-color: #FFF; font-size: 20pt; top: 50%; right: 10px; font-size: 36pt;
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 },
@@ -1,5 +1,5 @@
1
1
  module Callstacking
2
2
  module Rails
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
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.0
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: 2022-12-19 00:00:00.000000000 Z
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: Rolling debugger that shows the full state of each call.
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: Rolling debugger that shows the full state of each call per request.
115
+ summary: Quickly visualize which methods call which, their parameters, and return
116
+ values.
115
117
  test_files: []