callstacking-rails 0.1.18 → 0.1.20
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 +1 -0
- data/exe/callstacking-rails +5 -22
- data/lib/callstacking/rails/cli.rb +50 -0
- data/lib/callstacking/rails/client/authenticate.rb +0 -1
- data/lib/callstacking/rails/client/base.rb +5 -6
- data/lib/callstacking/rails/engine.rb +18 -14
- data/lib/callstacking/rails/settings.rb +58 -9
- data/lib/callstacking/rails/setup.rb +15 -55
- data/lib/callstacking/rails/trace.rb +6 -10
- data/lib/callstacking/rails/traces_helper.rb +4 -10
- data/lib/callstacking/rails/version.rb +1 -1
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf64a69817d5a94e205db95cd79dbff2c15d1190ed001bb49d1113aa0ada96b4
|
4
|
+
data.tar.gz: 4a37b31f1d9faac2de735ea799fd7fda9151ff2300de7401ad23d9dc8c21fd5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2739c75f8347b76baa6f509f4f5c31c87e3de649490d3c1d3f4c9237062b44e90cb8a0cf47cf4d025b1e9b0539834b0e8641cd6ef6a2302854f0610bf0a3775e
|
7
|
+
data.tar.gz: acecb1df5835c9b3992501e506042c1693364c326545e36d6b0fd6549b48afba0af43808a4a730135ea988bbd4f6a38c14c361d4467361456f668e5bda7fba1e
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Callstacking::Rails
|
2
|
+
[](https://github.com/callstacking/callstacking-rails/actions/workflows/ci.yml)
|
2
3
|
|
3
4
|
Call Stacking is a rolling, checkpoint debugger for Rails. It records all of the critical method calls within your app, along with their important context (param/argument/return/local variable values).
|
4
5
|
|
data/exe/callstacking-rails
CHANGED
@@ -1,32 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
|
-
require "callstacking/rails
|
5
|
-
require "callstacking/rails/settings"
|
4
|
+
require "callstacking/rails"
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
action = ARGV[0]&.downcase&.strip
|
6
|
+
action = Callstacking::Rails::Cli.action(ARGV)
|
7
|
+
settings = Callstacking::Rails::Settings.new
|
10
8
|
|
11
9
|
if action.nil?
|
12
10
|
Callstacking::Rails::Setup.instructions
|
13
11
|
exit!(1)
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
case action
|
19
|
-
when 'register'
|
20
|
-
`open #{settings[:url]}/users/sign_up`
|
21
|
-
|
22
|
-
when 'setup'
|
23
|
-
Callstacking::Rails::Setup.new.start
|
24
|
-
|
25
|
-
when 'enable'
|
26
|
-
Callstacking::Rails::Setup.new.enable_disable
|
27
|
-
puts "Call Stacking tracing enabled (#{Callstacking::Rails::Env.environment})"
|
28
|
-
|
29
|
-
when 'disable'
|
30
|
-
Callstacking::Rails::Setup.new.enable_disable(enabled: false)
|
31
|
-
puts "Call Stacking tracing disabled (#{Callstacking::Rails::Env.environment})"
|
32
|
-
end
|
14
|
+
cli = Callstacking::Rails::Cli.new(action, settings)
|
15
|
+
cli.run
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Callstacking
|
2
|
+
module Rails
|
3
|
+
class Cli
|
4
|
+
REGISTER = 'register'
|
5
|
+
SETUP = 'setup'
|
6
|
+
ENABLE = 'enable'
|
7
|
+
DISABLE = 'disable'
|
8
|
+
|
9
|
+
attr_reader :action, :settings
|
10
|
+
|
11
|
+
def initialize(action, settings)
|
12
|
+
@action = action
|
13
|
+
@settings = settings
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
parse_options
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.action(args)
|
21
|
+
args[0]&.downcase&.strip
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def parse_options
|
27
|
+
case action
|
28
|
+
when REGISTER
|
29
|
+
puts "Open the following URL to register:\n\n"
|
30
|
+
puts " #{settings.url}/users/sign_up\n\n"
|
31
|
+
REGISTER
|
32
|
+
|
33
|
+
when SETUP
|
34
|
+
Callstacking::Rails::Setup.new.start
|
35
|
+
SETUP
|
36
|
+
|
37
|
+
when ENABLE
|
38
|
+
settings.enable_disable
|
39
|
+
puts "Call Stacking tracing enabled (#{Callstacking::Rails::Env.environment})"
|
40
|
+
ENABLE
|
41
|
+
|
42
|
+
when DISABLE
|
43
|
+
settings.enable_disable(enabled: false)
|
44
|
+
puts "Call Stacking tracing disabled (#{Callstacking::Rails::Env.environment})"
|
45
|
+
DISABLE
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
require 'faraday/follow_redirects'
|
3
|
-
require "callstacking/rails/settings"
|
4
3
|
|
5
4
|
module Callstacking
|
6
5
|
module Rails
|
@@ -8,12 +7,12 @@ module Callstacking
|
|
8
7
|
class Error < StandardError; end
|
9
8
|
|
10
9
|
class Base
|
11
|
-
|
10
|
+
attr_reader :url, :auth_token
|
12
11
|
|
13
|
-
def initialize
|
14
|
-
|
12
|
+
def initialize(url, auth_token)
|
13
|
+
@url = url
|
14
|
+
@auth_token = auth_token
|
15
15
|
end
|
16
|
-
|
17
16
|
def connection
|
18
17
|
# https://github.com/lostisland/awesome-faraday
|
19
18
|
@connection ||= Faraday.new(url) do |c|
|
@@ -25,7 +24,7 @@ module Callstacking
|
|
25
24
|
c.request :json # This will set the "Content-Type" header to application/json and call .to_json on the body
|
26
25
|
c.adapter Faraday.default_adapter
|
27
26
|
|
28
|
-
if auth_token?
|
27
|
+
if auth_token.present?
|
29
28
|
c.request :authorization, :Bearer, auth_token
|
30
29
|
end
|
31
30
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require "rails"
|
2
|
+
require "active_support/cache"
|
3
|
+
require "callstacking/rails/env"
|
2
4
|
require "callstacking/rails/trace"
|
3
5
|
require "callstacking/rails/instrument"
|
4
6
|
require 'callstacking/rails/spans'
|
@@ -8,18 +10,17 @@ require "callstacking/rails/loader"
|
|
8
10
|
require "callstacking/rails/client/base"
|
9
11
|
require "callstacking/rails/client/authenticate"
|
10
12
|
require "callstacking/rails/client/trace"
|
13
|
+
require "callstacking/rails/cli"
|
11
14
|
require "callstacking/rails/traces_helper"
|
12
15
|
|
13
16
|
module Callstacking
|
14
17
|
module Rails
|
15
18
|
class Engine < ::Rails::Engine
|
16
|
-
cattr_accessor :spans, :trace
|
19
|
+
cattr_accessor :spans, :trace, :settings
|
17
20
|
|
18
|
-
include Settings
|
19
21
|
isolate_namespace Callstacking::Rails
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
+
@@settings||=Callstacking::Rails::Settings.new
|
23
24
|
@@spans||=Spans.new
|
24
25
|
@@trace||=Trace.new(@@spans)
|
25
26
|
|
@@ -31,19 +32,22 @@ module Callstacking
|
|
31
32
|
ActiveSupport.on_load :action_controller do
|
32
33
|
include Callstacking::Rails::TracesHelper
|
33
34
|
end
|
34
|
-
|
35
|
-
Callstacking::Rails::Loader.new.on_load(@@spans) if enabled?
|
36
35
|
end
|
37
36
|
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
config.after_initialize do
|
38
|
+
if @@settings.enabled?
|
39
|
+
puts "Call Stacking enabled (#{Callstacking::Rails::Env.environment})"
|
41
40
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
ActionController::Base.send :after_action do
|
42
|
+
inject_hud(@@settings)
|
43
|
+
end
|
44
|
+
|
45
|
+
Callstacking::Rails::Loader.new.on_load(@@spans)
|
46
|
+
|
47
|
+
@@trace.tracing
|
48
|
+
else
|
49
|
+
puts "Call Stacking disabled (#{Callstacking::Rails::Env.environment})"
|
50
|
+
end
|
47
51
|
end
|
48
52
|
end
|
49
53
|
end
|
@@ -1,18 +1,22 @@
|
|
1
|
+
require "active_support/cache"
|
1
2
|
require "active_support/concern"
|
2
3
|
require "active_support/core_ext/class/attribute_accessors"
|
3
|
-
require "callstacking/rails/env"
|
4
4
|
|
5
5
|
module Callstacking
|
6
6
|
module Rails
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
included do |base|
|
11
|
-
attr_accessor :settings
|
12
|
-
end
|
7
|
+
class Settings
|
8
|
+
attr_accessor :settings
|
9
|
+
attr_reader :client
|
13
10
|
|
14
11
|
SETTINGS_FILE = "#{Dir.home}/.callstacking"
|
15
12
|
PRODUCTION_URL = "https://callstacking.com"
|
13
|
+
ENV_KEY = 'CALLSTACKING_ENABLED'
|
14
|
+
CACHE_KEY = :callstacking_enabled
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
read_settings
|
18
|
+
@client = Callstacking::Rails::Client::Authenticate.new(url, auth_token)
|
19
|
+
end
|
16
20
|
|
17
21
|
def url
|
18
22
|
settings[:url] || PRODUCTION_URL
|
@@ -30,9 +34,19 @@ module Callstacking
|
|
30
34
|
File.write(SETTINGS_FILE, new_settings.to_yaml)
|
31
35
|
end
|
32
36
|
|
37
|
+
def enable!
|
38
|
+
::Rails.cache.write(CACHE_KEY, true)
|
39
|
+
end
|
40
|
+
|
41
|
+
def disable!
|
42
|
+
::Rails.cache.write(CACHE_KEY, false)
|
43
|
+
end
|
44
|
+
|
33
45
|
def enabled?
|
46
|
+
return ::Rails.cache.read(CACHE_KEY) unless ::Rails.cache.read(CACHE_KEY).nil?
|
47
|
+
return false if ENV[ENV_KEY] == 'false'
|
34
48
|
return false if settings.nil?
|
35
|
-
|
49
|
+
|
36
50
|
settings[:enabled]
|
37
51
|
end
|
38
52
|
|
@@ -40,8 +54,43 @@ module Callstacking
|
|
40
54
|
!enabled?
|
41
55
|
end
|
42
56
|
|
57
|
+
def save(email, password, url)
|
58
|
+
props = { auth_token: '',
|
59
|
+
url: url,
|
60
|
+
enabled: true
|
61
|
+
}
|
62
|
+
|
63
|
+
props = { Callstacking::Rails::Env.environment => {
|
64
|
+
settings: props
|
65
|
+
} }
|
66
|
+
|
67
|
+
write_settings(complete_settings.merge(props))
|
68
|
+
|
69
|
+
props[Callstacking::Rails::Env.environment][:settings][:auth_token] = token(email, password)
|
70
|
+
|
71
|
+
write_settings(complete_settings.merge(props))
|
72
|
+
|
73
|
+
read_settings
|
74
|
+
end
|
75
|
+
|
76
|
+
def enable_disable(enabled: true)
|
77
|
+
settings[:enabled] = enabled
|
78
|
+
|
79
|
+
props = { Callstacking::Rails::Env.environment => {
|
80
|
+
settings: settings
|
81
|
+
} }
|
82
|
+
|
83
|
+
write_settings(complete_settings.merge(props))
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def token(email, password)
|
89
|
+
client.login(email, password)
|
90
|
+
end
|
91
|
+
|
43
92
|
def read_settings
|
44
|
-
|
93
|
+
@settings = complete_settings.dig(::Callstacking::Rails::Env.environment, :settings) || {}
|
45
94
|
rescue StandardError => e
|
46
95
|
puts e.full_message
|
47
96
|
puts e.backtrace.join("\n")
|
@@ -1,53 +1,33 @@
|
|
1
1
|
require 'yaml'
|
2
|
-
require "callstacking/rails/settings"
|
3
|
-
require "callstacking/rails/client/authenticate"
|
4
|
-
require "callstacking/rails/env"
|
5
2
|
require 'io/console'
|
6
3
|
|
7
4
|
module Callstacking
|
8
5
|
module Rails
|
9
6
|
class Setup
|
10
|
-
|
11
|
-
extend ::Callstacking::Rails::Settings
|
12
|
-
|
13
|
-
attr_accessor :client
|
7
|
+
attr_accessor :settings
|
14
8
|
|
15
9
|
def initialize
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
def client
|
20
|
-
@client = Callstacking::Rails::Client::Authenticate.new
|
10
|
+
@settings = Callstacking::Rails::Settings.new
|
21
11
|
end
|
22
12
|
|
23
13
|
def start
|
24
14
|
puts "Login to callstacking.com"
|
25
15
|
puts
|
26
16
|
|
27
|
-
email = prompt("Enter email:")
|
17
|
+
email = prompt("Enter email:", echo: true)
|
28
18
|
password = prompt("Enter password:", echo: false)
|
29
19
|
|
30
|
-
save(email, password, url)
|
20
|
+
settings.save(email, password, url)
|
31
21
|
|
32
22
|
puts "Authentication successful."
|
33
|
-
puts "Settings saved to #{SETTINGS_FILE}"
|
23
|
+
puts "Settings saved to #{Callstacking::Rails::Settings::SETTINGS_FILE}"
|
34
24
|
true
|
35
25
|
rescue StandardError => e
|
36
|
-
puts "
|
26
|
+
puts "Error authenticating: #{e.message}"
|
37
27
|
puts e.backtrace.join("\n")
|
38
28
|
false
|
39
29
|
end
|
40
30
|
|
41
|
-
def enable_disable(enabled: true)
|
42
|
-
settings[:enabled] = enabled
|
43
|
-
|
44
|
-
props = { Callstacking::Rails::Env.environment => {
|
45
|
-
settings: settings
|
46
|
-
} }
|
47
|
-
|
48
|
-
write_settings(complete_settings.merge(props))
|
49
|
-
end
|
50
|
-
|
51
31
|
def prompt(label, echo: true)
|
52
32
|
puts label
|
53
33
|
|
@@ -58,31 +38,7 @@ module Callstacking
|
|
58
38
|
value
|
59
39
|
end
|
60
40
|
|
61
|
-
def token(email, password)
|
62
|
-
client.login(email, password)
|
63
|
-
end
|
64
|
-
|
65
|
-
def save(email, password, url)
|
66
|
-
props = { auth_token: '',
|
67
|
-
url: url,
|
68
|
-
enabled: true
|
69
|
-
}
|
70
|
-
|
71
|
-
props = { Callstacking::Rails::Env.environment => {
|
72
|
-
settings: props
|
73
|
-
} }
|
74
|
-
|
75
|
-
write_settings(complete_settings.merge(props))
|
76
|
-
|
77
|
-
props[Callstacking::Rails::Env.environment][:settings][:auth_token] = token(email, password)
|
78
|
-
|
79
|
-
write_settings(complete_settings.merge(props))
|
80
|
-
|
81
|
-
read_settings
|
82
|
-
end
|
83
|
-
|
84
41
|
def self.instructions
|
85
|
-
read_settings
|
86
42
|
puts "loading environment #{Callstacking::Rails::Env.environment}"
|
87
43
|
puts
|
88
44
|
puts "Usage: "
|
@@ -94,7 +50,7 @@ module Callstacking
|
|
94
50
|
puts " > callstacking-rails setup"
|
95
51
|
puts
|
96
52
|
puts " Interactively prompts you for your callstacking.com username/password."
|
97
|
-
puts " Stores auth details in #{SETTINGS_FILE}"
|
53
|
+
puts " Stores auth details in #{Callstacking::Rails::Settings::SETTINGS_FILE}"
|
98
54
|
puts
|
99
55
|
puts " > callstacking-rails enable"
|
100
56
|
puts
|
@@ -107,19 +63,23 @@ module Callstacking
|
|
107
63
|
puts " You can have multiple environments."
|
108
64
|
puts " The default is #{Callstacking::Rails::Env::DEFAULT_ENVIRONMENT}."
|
109
65
|
puts
|
110
|
-
puts " The #{Callstacking::Rails::Env.environment}: section in the #{SETTINGS_FILE} contains your credentials."
|
66
|
+
puts " The #{Callstacking::Rails::Env.environment}: section in the #{Callstacking::Rails::Settings::SETTINGS_FILE} contains your credentials."
|
111
67
|
puts " By setting the RAILS_ENV environment you can maintain multiple settings."
|
112
68
|
puts
|
113
69
|
puts "Questions? Create an issue: https://github.com/callstacking/callstacking-rails/issues"
|
70
|
+
|
71
|
+
:instructions
|
114
72
|
end
|
115
73
|
|
116
74
|
private
|
117
75
|
|
118
76
|
def url
|
119
|
-
if Callstacking::Rails::Env.production?
|
120
|
-
|
77
|
+
if (Callstacking::Rails::Env.production? || ::Rails.env.test?) &&
|
78
|
+
ENV['CALLSTACKING_RAILS_LOCAL_TEST'].nil?
|
79
|
+
Callstacking::Rails::Settings::PRODUCTION_URL
|
121
80
|
else
|
122
|
-
prompt("Enter URL for #{Callstacking::Rails::Env.environment} API calls [#{PRODUCTION_URL}]:") ||
|
81
|
+
prompt("Enter URL for #{Callstacking::Rails::Env.environment} API calls [#{Callstacking::Rails::Settings::PRODUCTION_URL}]:") ||
|
82
|
+
Callstacking::Rails::Settings::PRODUCTION_URL
|
123
83
|
end
|
124
84
|
end
|
125
85
|
end
|
@@ -1,29 +1,25 @@
|
|
1
1
|
require "rails"
|
2
2
|
require "active_support/concern"
|
3
|
-
require "callstacking/rails/client/base"
|
4
|
-
require "callstacking/rails/client/authenticate"
|
5
|
-
require "callstacking/rails/client/trace"
|
6
|
-
require "callstacking/rails/settings"
|
7
3
|
|
8
4
|
module Callstacking
|
9
5
|
module Rails
|
10
6
|
class Trace
|
11
|
-
include Callstacking::Rails::Settings
|
12
|
-
|
13
7
|
attr_accessor :spans, :client, :lock
|
8
|
+
attr_reader :settings
|
14
9
|
cattr_accessor :current_request_id
|
15
10
|
|
11
|
+
ICON = '💥'
|
12
|
+
|
16
13
|
def initialize(spans)
|
17
14
|
@traces = []
|
18
15
|
@spans = spans
|
16
|
+
@settings = Callstacking::Rails::Settings.new
|
19
17
|
|
20
18
|
@lock = Mutex.new
|
21
|
-
@client = Callstacking::Rails::Client::Trace.new
|
19
|
+
@client = Callstacking::Rails::Client::Trace.new(settings.url, settings.auth_token)
|
22
20
|
end
|
23
21
|
|
24
22
|
def tracing
|
25
|
-
read_settings
|
26
|
-
|
27
23
|
trace_id = nil
|
28
24
|
max_trace_entries = nil
|
29
25
|
|
@@ -141,7 +137,7 @@ module Callstacking
|
|
141
137
|
end
|
142
138
|
|
143
139
|
def print_trace_url(trace_id)
|
144
|
-
url = "#{settings
|
140
|
+
url = "#{settings.url}/traces/#{trace_id}"
|
145
141
|
|
146
142
|
puts "*" * url.size
|
147
143
|
puts url
|
@@ -7,11 +7,8 @@ module Callstacking
|
|
7
7
|
include ActionView::Helpers::TagHelper
|
8
8
|
include ActionView::Helpers::JavaScriptHelper
|
9
9
|
include ActionView::Context
|
10
|
-
include Callstacking::Rails::Settings
|
11
|
-
|
12
|
-
def hud
|
13
|
-
read_settings
|
14
10
|
|
11
|
+
def hud(url)
|
15
12
|
frame_url = "#{url || Callstacking::Rails::Settings::PRODUCTION_URL}/traces/#{Callstacking::Rails::Trace.current_request_id}/print"
|
16
13
|
|
17
14
|
body = []
|
@@ -20,7 +17,7 @@ module Callstacking
|
|
20
17
|
padding: 0px; position: fixed; height: 50px; width: 40px; cursor: pointer;',
|
21
18
|
onclick: 'document.getElementById("callstacking-debugger").style.display = "unset";
|
22
19
|
document.getElementById("callstacking-close").style.display = "unset";') do
|
23
|
-
"<span title='ctrl-d'><center
|
20
|
+
"<span title='ctrl-d'><center>#{Callstacking::Rails::Trace::ICON}</center></span>".html_safe
|
24
21
|
end)
|
25
22
|
|
26
23
|
body << (content_tag(:iframe, src: frame_url, id: 'callstacking-debugger', data: { turbo:false },
|
@@ -45,11 +42,8 @@ module Callstacking
|
|
45
42
|
body.join
|
46
43
|
end
|
47
44
|
|
48
|
-
def inject_hud
|
49
|
-
|
50
|
-
return unless enabled?
|
51
|
-
|
52
|
-
response.body = response.body.sub(/<\/body>/i, "#{hud}</body>")
|
45
|
+
def inject_hud(settings)
|
46
|
+
response.body = response.body.sub(/<\/body>/i, "#{hud(settings.url)}</body>")
|
53
47
|
end
|
54
48
|
end
|
55
49
|
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.
|
4
|
+
version: 0.1.20
|
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-03-
|
11
|
+
date: 2023-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mocha
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-silence
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
description: Quickly visualize which methods call which, their parameters, and return
|
56
84
|
values.
|
57
85
|
email:
|
@@ -74,6 +102,7 @@ files:
|
|
74
102
|
- config/routes.rb
|
75
103
|
- exe/callstacking-rails
|
76
104
|
- lib/callstacking/rails.rb
|
105
|
+
- lib/callstacking/rails/cli.rb
|
77
106
|
- lib/callstacking/rails/client/authenticate.rb
|
78
107
|
- lib/callstacking/rails/client/base.rb
|
79
108
|
- lib/callstacking/rails/client/trace.rb
|