power_trace 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +3 -18
- data/Gemfile +5 -0
- data/Gemfile.lock +124 -1
- data/README.md +70 -19
- data/examples/rails-6/.browserslistrc +1 -0
- data/examples/rails-6/.gitignore +41 -0
- data/examples/rails-6/.ruby-version +1 -0
- data/examples/rails-6/Gemfile +55 -0
- data/examples/rails-6/Gemfile.lock +233 -0
- data/examples/rails-6/README.md +24 -0
- data/examples/rails-6/Rakefile +6 -0
- data/examples/rails-6/app/assets/config/manifest.js +2 -0
- data/examples/rails-6/app/assets/images/.keep +0 -0
- data/examples/rails-6/app/assets/stylesheets/application.css +15 -0
- data/examples/rails-6/app/assets/stylesheets/posts.scss +3 -0
- data/examples/rails-6/app/assets/stylesheets/scaffolds.scss +65 -0
- data/examples/rails-6/app/channels/application_cable/channel.rb +4 -0
- data/examples/rails-6/app/channels/application_cable/connection.rb +4 -0
- data/examples/rails-6/app/controllers/application_controller.rb +2 -0
- data/examples/rails-6/app/controllers/concerns/.keep +0 -0
- data/examples/rails-6/app/controllers/posts_controller.rb +75 -0
- data/examples/rails-6/app/helpers/application_helper.rb +2 -0
- data/examples/rails-6/app/helpers/posts_helper.rb +2 -0
- data/examples/rails-6/app/javascript/channels/consumer.js +6 -0
- data/examples/rails-6/app/javascript/channels/index.js +5 -0
- data/examples/rails-6/app/javascript/packs/application.js +17 -0
- data/examples/rails-6/app/jobs/application_job.rb +7 -0
- data/examples/rails-6/app/mailers/application_mailer.rb +4 -0
- data/examples/rails-6/app/models/application_record.rb +3 -0
- data/examples/rails-6/app/models/concerns/.keep +0 -0
- data/examples/rails-6/app/models/post.rb +2 -0
- data/examples/rails-6/app/views/layouts/application.html.erb +15 -0
- data/examples/rails-6/app/views/layouts/mailer.html.erb +13 -0
- data/examples/rails-6/app/views/layouts/mailer.text.erb +1 -0
- data/examples/rails-6/app/views/posts/_form.html.erb +27 -0
- data/examples/rails-6/app/views/posts/_post.json.jbuilder +2 -0
- data/examples/rails-6/app/views/posts/edit.html.erb +6 -0
- data/examples/rails-6/app/views/posts/index.html.erb +29 -0
- data/examples/rails-6/app/views/posts/index.json.jbuilder +1 -0
- data/examples/rails-6/app/views/posts/new.html.erb +5 -0
- data/examples/rails-6/app/views/posts/show.html.erb +14 -0
- data/examples/rails-6/app/views/posts/show.json.jbuilder +1 -0
- data/examples/rails-6/babel.config.js +72 -0
- data/examples/rails-6/bin/bundle +114 -0
- data/examples/rails-6/bin/rails +9 -0
- data/examples/rails-6/bin/rake +9 -0
- data/examples/rails-6/bin/setup +36 -0
- data/examples/rails-6/bin/webpack +18 -0
- data/examples/rails-6/bin/webpack-dev-server +18 -0
- data/examples/rails-6/bin/yarn +11 -0
- data/examples/rails-6/config.ru +5 -0
- data/examples/rails-6/config/application.rb +19 -0
- data/examples/rails-6/config/boot.rb +4 -0
- data/examples/rails-6/config/cable.yml +10 -0
- data/examples/rails-6/config/credentials.yml.enc +1 -0
- data/examples/rails-6/config/database.yml +25 -0
- data/examples/rails-6/config/environment.rb +5 -0
- data/examples/rails-6/config/environments/development.rb +62 -0
- data/examples/rails-6/config/environments/production.rb +112 -0
- data/examples/rails-6/config/environments/test.rb +49 -0
- data/examples/rails-6/config/initializers/application_controller_renderer.rb +8 -0
- data/examples/rails-6/config/initializers/assets.rb +14 -0
- data/examples/rails-6/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/rails-6/config/initializers/content_security_policy.rb +30 -0
- data/examples/rails-6/config/initializers/cookies_serializer.rb +5 -0
- data/examples/rails-6/config/initializers/filter_parameter_logging.rb +4 -0
- data/examples/rails-6/config/initializers/inflections.rb +16 -0
- data/examples/rails-6/config/initializers/mime_types.rb +4 -0
- data/examples/rails-6/config/initializers/power_trace.rb +3 -0
- data/examples/rails-6/config/initializers/wrap_parameters.rb +14 -0
- data/examples/rails-6/config/locales/en.yml +33 -0
- data/examples/rails-6/config/puma.rb +38 -0
- data/examples/rails-6/config/routes.rb +5 -0
- data/examples/rails-6/config/storage.yml +34 -0
- data/examples/rails-6/config/webpack/development.js +5 -0
- data/examples/rails-6/config/webpack/environment.js +3 -0
- data/examples/rails-6/config/webpack/production.js +5 -0
- data/examples/rails-6/config/webpack/test.js +5 -0
- data/examples/rails-6/config/webpacker.yml +96 -0
- data/examples/rails-6/db/migrate/20200829063653_create_posts.rb +10 -0
- data/examples/rails-6/db/seeds.rb +7 -0
- data/examples/rails-6/lib/assets/.keep +0 -0
- data/examples/rails-6/lib/tasks/.keep +0 -0
- data/examples/rails-6/log/.keep +0 -0
- data/examples/rails-6/package.json +15 -0
- data/examples/rails-6/postcss.config.js +12 -0
- data/examples/rails-6/public/404.html +67 -0
- data/examples/rails-6/public/422.html +67 -0
- data/examples/rails-6/public/500.html +66 -0
- data/examples/rails-6/public/apple-touch-icon-precomposed.png +0 -0
- data/examples/rails-6/public/apple-touch-icon.png +0 -0
- data/examples/rails-6/public/favicon.ico +0 -0
- data/examples/rails-6/public/robots.txt +1 -0
- data/examples/rails-6/storage/.keep +0 -0
- data/examples/rails-6/test/application_system_test_case.rb +5 -0
- data/examples/rails-6/test/channels/application_cable/connection_test.rb +11 -0
- data/examples/rails-6/test/controllers/.keep +0 -0
- data/examples/rails-6/test/controllers/posts_controller_test.rb +48 -0
- data/examples/rails-6/test/fixtures/.keep +0 -0
- data/examples/rails-6/test/fixtures/files/.keep +0 -0
- data/examples/rails-6/test/fixtures/posts.yml +9 -0
- data/examples/rails-6/test/helpers/.keep +0 -0
- data/examples/rails-6/test/integration/.keep +0 -0
- data/examples/rails-6/test/mailers/.keep +0 -0
- data/examples/rails-6/test/models/.keep +0 -0
- data/examples/rails-6/test/models/post_test.rb +7 -0
- data/examples/rails-6/test/system/.keep +0 -0
- data/examples/rails-6/test/system/posts_test.rb +45 -0
- data/examples/rails-6/test/test_helper.rb +13 -0
- data/examples/rails-6/tmp/.keep +0 -0
- data/examples/rails-6/tmp/pids/.keep +0 -0
- data/examples/rails-6/vendor/.keep +0 -0
- data/examples/rails-6/yarn.lock +7593 -0
- data/images/normal_minitest_error.png +0 -0
- data/images/normal_rails_error.png +0 -0
- data/images/power_minitest_error.png +0 -0
- data/images/power_rails_error.png +0 -0
- data/lib/power_trace.rb +24 -7
- data/lib/power_trace/entry.rb +75 -10
- data/lib/power_trace/exception_patch.rb +1 -1
- data/lib/power_trace/integrations/minitest.rb +14 -0
- data/lib/power_trace/integrations/rails.rb +2 -0
- data/lib/power_trace/integrations/rspec.rb +11 -0
- data/lib/power_trace/rails/action_dispatch/debug_exceptions.rb +28 -0
- data/lib/power_trace/rails/action_dispatch/exception_wrapper.rb +28 -0
- data/lib/power_trace/version.rb +1 -1
- data/power_trace.gemspec +1 -0
- metadata +134 -3
- data/lib/power_trace/rspec_patch.rb +0 -15
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/power_trace.rb
CHANGED
@@ -8,8 +8,7 @@ module PowerTrace
|
|
8
8
|
cattr_accessor :replace_backtrace, instance_accessor: false
|
9
9
|
self.replace_backtrace = false
|
10
10
|
|
11
|
-
cattr_accessor :
|
12
|
-
self.power_rspec_trace = false
|
11
|
+
cattr_accessor :integrations, instance_accessor: false
|
13
12
|
|
14
13
|
cattr_accessor :trace_limit, instance_accessor: false
|
15
14
|
self.trace_limit = 50
|
@@ -19,6 +18,29 @@ module PowerTrace
|
|
19
18
|
end
|
20
19
|
|
21
20
|
class << self
|
21
|
+
AVAILABLE_INTEGRATIONS = [:rails, :rspec, :minitest].freeze
|
22
|
+
|
23
|
+
def integrations=(integrations)
|
24
|
+
integrations = Array(integrations).uniq.map(&:to_sym)
|
25
|
+
|
26
|
+
integrations.each do |integration|
|
27
|
+
unless AVAILABLE_INTEGRATIONS.include?(integration)
|
28
|
+
raise "#{integration} is not a supported integration, only #{AVAILABLE_INTEGRATIONS} is allowed."
|
29
|
+
end
|
30
|
+
|
31
|
+
case integration
|
32
|
+
when :rails
|
33
|
+
require "power_trace/integrations/rails"
|
34
|
+
when :rspec
|
35
|
+
require "power_trace/integrations/rspec"
|
36
|
+
when :minitest
|
37
|
+
require "power_trace/integrations/minitest"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
@@integrations = integrations
|
42
|
+
end
|
43
|
+
|
22
44
|
def print_power_trace_error(exception)
|
23
45
|
puts(exception)
|
24
46
|
puts(exception.backtrace)
|
@@ -31,8 +53,3 @@ include PowerTrace
|
|
31
53
|
|
32
54
|
require "power_trace/exception_patch"
|
33
55
|
|
34
|
-
require "rspec" rescue LoadError
|
35
|
-
|
36
|
-
if defined?(RSpec)
|
37
|
-
require "power_trace/rspec_patch"
|
38
|
-
end
|
data/lib/power_trace/entry.rb
CHANGED
@@ -5,14 +5,21 @@ module PowerTrace
|
|
5
5
|
class Entry
|
6
6
|
include ColorizeHelper
|
7
7
|
UNDEFINED = "[undefined]"
|
8
|
+
EMPTY_STRING = ""
|
9
|
+
EMPTY_ARRAY = [].freeze
|
10
|
+
EMPTY_HASH = {}.freeze
|
11
|
+
SET_IVAR_INSTRUCTION_REGEX = /setinstancevariable/
|
12
|
+
SPACE = "\s"
|
13
|
+
DEFAULT_LINE_LIMIT = 100
|
8
14
|
|
9
|
-
attr_reader :frame, :filepath, :line_number, :receiver, :locals, :arguments
|
15
|
+
attr_reader :frame, :filepath, :line_number, :receiver, :locals, :arguments, :ivars
|
10
16
|
|
11
17
|
def initialize(frame)
|
12
18
|
@frame = frame
|
13
19
|
@filepath, @line_number = frame.source_location
|
14
20
|
@receiver = frame.receiver
|
15
|
-
@locals, @arguments =
|
21
|
+
@locals, @arguments = collect_locals_and_arguments
|
22
|
+
@ivars = collect_ivars
|
16
23
|
end
|
17
24
|
|
18
25
|
def name(options = {})
|
@@ -37,6 +44,13 @@ module PowerTrace
|
|
37
44
|
STR
|
38
45
|
end
|
39
46
|
|
47
|
+
def ivars_string(options = {})
|
48
|
+
<<~STR.chomp
|
49
|
+
#{options[:indentation]}(Instance Variables)
|
50
|
+
#{hash_to_string(ivars, false, options)}
|
51
|
+
STR
|
52
|
+
end
|
53
|
+
|
40
54
|
def call_trace(options = {})
|
41
55
|
"#{location(options)}:in `#{name(options)}'"
|
42
56
|
end
|
@@ -45,7 +59,8 @@ module PowerTrace
|
|
45
59
|
name: :blue,
|
46
60
|
location: :green,
|
47
61
|
arguments_string: :orange,
|
48
|
-
locals_string: :megenta
|
62
|
+
locals_string: :megenta,
|
63
|
+
ivars_string: :cyan
|
49
64
|
}
|
50
65
|
|
51
66
|
ATTRIBUTE_COLORS.each do |attribute, color|
|
@@ -78,7 +93,7 @@ module PowerTrace
|
|
78
93
|
def assemble_string(options)
|
79
94
|
strings = [call_trace(options)]
|
80
95
|
|
81
|
-
indentation =
|
96
|
+
indentation = SPACE * (options[:extra_info_indent] || 0)
|
82
97
|
options[:indentation] = indentation
|
83
98
|
|
84
99
|
if arguments.present?
|
@@ -89,12 +104,16 @@ module PowerTrace
|
|
89
104
|
strings << locals_string(options)
|
90
105
|
end
|
91
106
|
|
107
|
+
if ivars.present?
|
108
|
+
strings << ivars_string(options)
|
109
|
+
end
|
110
|
+
|
92
111
|
strings.join("\n")
|
93
112
|
end
|
94
113
|
|
95
114
|
def hash_to_string(hash, inspect, options)
|
96
|
-
truncation = options[:line_limit]
|
97
|
-
indentation = options[:indentation] +
|
115
|
+
truncation = options[:line_limit] || DEFAULT_LINE_LIMIT
|
116
|
+
indentation = (options[:indentation] || EMPTY_STRING) + SPACE * 2
|
98
117
|
|
99
118
|
elements_string = hash.map do |key, value|
|
100
119
|
value_string = value_to_string(value, truncation)
|
@@ -108,15 +127,61 @@ module PowerTrace
|
|
108
127
|
when Array
|
109
128
|
value.to_s.truncate(truncation, omission: "...]")
|
110
129
|
when Hash
|
111
|
-
value.
|
130
|
+
elements_string = value.map do |key, val|
|
131
|
+
value_string = value_to_string(val, truncation)
|
132
|
+
"#{key.to_s}: #{value_string}"
|
133
|
+
end.join(", ")
|
134
|
+
|
135
|
+
"{#{elements_string}}".truncate(truncation, omission: "...}")
|
112
136
|
when nil
|
113
137
|
"nil"
|
138
|
+
when Symbol
|
139
|
+
":#{value}"
|
140
|
+
when String
|
141
|
+
"\"#{value.truncate(truncation)}\""
|
114
142
|
else
|
115
|
-
|
143
|
+
if defined?(ActiveRecord::Base)
|
144
|
+
case value
|
145
|
+
when ActiveRecord::Base
|
146
|
+
value.inspect.truncate(truncation, omission: "...>")
|
147
|
+
when ActiveRecord::Relation
|
148
|
+
"#{value}, SQL - (#{value.to_sql})"
|
149
|
+
else
|
150
|
+
value.to_s.truncate(truncation)
|
151
|
+
end
|
152
|
+
else
|
153
|
+
value.to_s.truncate(truncation)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# we need to make sure
|
159
|
+
# 1. the frame is iseq (vm instructions)
|
160
|
+
# 2. and the instructions contain `setinstancevariable` instructions
|
161
|
+
#
|
162
|
+
# and only then we can start capturing instance variables from the frame
|
163
|
+
# this is to make sure we only capture the instance variables set inside the current method call
|
164
|
+
# otherwise, it'll create a lot noise
|
165
|
+
def collect_ivars
|
166
|
+
iseq = frame.instance_variable_get(:@iseq)
|
167
|
+
|
168
|
+
return EMPTY_HASH unless iseq
|
169
|
+
|
170
|
+
set_ivar_instructios = iseq.disasm.split("\n").select { |i| i.match?(SET_IVAR_INSTRUCTION_REGEX) }
|
171
|
+
|
172
|
+
return EMPTY_HASH unless set_ivar_instructios.present?
|
173
|
+
|
174
|
+
new_ivars = set_ivar_instructios.map do |i|
|
175
|
+
i.match(/:(@\w+),/)[1]
|
176
|
+
end
|
177
|
+
|
178
|
+
new_ivars.inject({}) do |hash, ivar_name|
|
179
|
+
hash[ivar_name] = receiver.instance_variable_get(ivar_name.to_sym)
|
180
|
+
hash
|
116
181
|
end
|
117
182
|
end
|
118
183
|
|
119
|
-
def
|
184
|
+
def collect_locals_and_arguments
|
120
185
|
locals = {}
|
121
186
|
arguments = {}
|
122
187
|
|
@@ -147,7 +212,7 @@ module PowerTrace
|
|
147
212
|
if method
|
148
213
|
method.parameters.map { |parameter| parameter[1] }
|
149
214
|
else
|
150
|
-
|
215
|
+
EMPTY_ARRAY
|
151
216
|
end
|
152
217
|
end
|
153
218
|
end
|
@@ -18,7 +18,7 @@ TracePoint.trace(:raise) do |tp|
|
|
18
18
|
# these errors are commonly used as flow control so working with them can be error-prone and slow
|
19
19
|
# we can revisit them once the gem gets more stable
|
20
20
|
next if e.is_a?(LoadError)
|
21
|
-
next if e.is_a?(NameError)
|
21
|
+
next if e.is_a?(NameError) && !e.is_a?(NoMethodError)
|
22
22
|
next if e.is_a?(SystemCallError)
|
23
23
|
|
24
24
|
if defined?(Bootsnap)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Minitest
|
2
|
+
class UnexpectedError
|
3
|
+
alias :original_backtrace :backtrace
|
4
|
+
|
5
|
+
def backtrace
|
6
|
+
begin
|
7
|
+
error.stored_power_trace.to_backtrace(extra_info_indent: 8)
|
8
|
+
rescue => e
|
9
|
+
PowerTrace.print_power_trace_error(e)
|
10
|
+
original_backtrace
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
RSpec::Core::Formatters::ExceptionPresenter.class_eval do
|
2
|
+
alias :original_formatted_backtrace :formatted_backtrace
|
3
|
+
|
4
|
+
def formatted_backtrace(exception=@exception)
|
5
|
+
backtrace = exception.stored_power_trace.to_backtrace(extra_info_indent: 8)
|
6
|
+
backtrace_formatter.format_backtrace(backtrace, example.metadata) + formatted_cause(exception)
|
7
|
+
rescue => e
|
8
|
+
PowerTrace.print_power_trace_error(e)
|
9
|
+
original_formatted_backtrace
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module ActionDispatch
|
2
|
+
class DebugExceptions
|
3
|
+
private
|
4
|
+
|
5
|
+
def log_error(request, wrapper)
|
6
|
+
logger = logger(request)
|
7
|
+
|
8
|
+
return unless logger
|
9
|
+
|
10
|
+
exception = wrapper.exception
|
11
|
+
|
12
|
+
trace = wrapper.application_power_trace
|
13
|
+
trace = wrapper.framework_power_trace if trace.empty?
|
14
|
+
|
15
|
+
ActiveSupport::Deprecation.silence do
|
16
|
+
message = []
|
17
|
+
message << " "
|
18
|
+
message << "#{exception.class} (#{exception.message}):"
|
19
|
+
message.concat(exception.annotated_source_code) if exception.respond_to?(:annotated_source_code)
|
20
|
+
message << " "
|
21
|
+
message.concat(trace)
|
22
|
+
|
23
|
+
log_array(logger, message)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module ActionDispatch
|
2
|
+
class ExceptionWrapper
|
3
|
+
def application_power_trace
|
4
|
+
clean_power_trace(:silent)
|
5
|
+
end
|
6
|
+
|
7
|
+
def framework_power_trace
|
8
|
+
clean_power_trace(:noise)
|
9
|
+
end
|
10
|
+
|
11
|
+
def full_power_trace
|
12
|
+
clean_power_trace(:all)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def stored_power_trace
|
17
|
+
Array(@exception.stored_power_trace.map { |t| t.to_s(extra_info_indent: 4) })
|
18
|
+
end
|
19
|
+
|
20
|
+
def clean_power_trace(*args)
|
21
|
+
if backtrace_cleaner
|
22
|
+
backtrace_cleaner.clean(stored_power_trace, *args)
|
23
|
+
else
|
24
|
+
stored_power_trace
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/power_trace/version.rb
CHANGED
data/power_trace.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_trace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- st0012
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
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'
|
55
69
|
description: |-
|
56
70
|
Backtrace (Stack traces) are essential information for debugging our applications. However, they only tell us what the program did, but don't tell us what it had (the arguments, local variables...etc.). So it's very often that we'd need to visit each call site, rerun the program, and try to print out the variables. To me, It's like the Google map's navigation only tells us the name of the roads, but not showing us the map along with them.
|
57
71
|
|
@@ -78,9 +92,122 @@ files:
|
|
78
92
|
- benchmarks/raise_with_power_trace.rb
|
79
93
|
- bin/console
|
80
94
|
- bin/setup
|
95
|
+
- examples/rails-6/.browserslistrc
|
96
|
+
- examples/rails-6/.gitignore
|
97
|
+
- examples/rails-6/.ruby-version
|
98
|
+
- examples/rails-6/Gemfile
|
99
|
+
- examples/rails-6/Gemfile.lock
|
100
|
+
- examples/rails-6/README.md
|
101
|
+
- examples/rails-6/Rakefile
|
102
|
+
- examples/rails-6/app/assets/config/manifest.js
|
103
|
+
- examples/rails-6/app/assets/images/.keep
|
104
|
+
- examples/rails-6/app/assets/stylesheets/application.css
|
105
|
+
- examples/rails-6/app/assets/stylesheets/posts.scss
|
106
|
+
- examples/rails-6/app/assets/stylesheets/scaffolds.scss
|
107
|
+
- examples/rails-6/app/channels/application_cable/channel.rb
|
108
|
+
- examples/rails-6/app/channels/application_cable/connection.rb
|
109
|
+
- examples/rails-6/app/controllers/application_controller.rb
|
110
|
+
- examples/rails-6/app/controllers/concerns/.keep
|
111
|
+
- examples/rails-6/app/controllers/posts_controller.rb
|
112
|
+
- examples/rails-6/app/helpers/application_helper.rb
|
113
|
+
- examples/rails-6/app/helpers/posts_helper.rb
|
114
|
+
- examples/rails-6/app/javascript/channels/consumer.js
|
115
|
+
- examples/rails-6/app/javascript/channels/index.js
|
116
|
+
- examples/rails-6/app/javascript/packs/application.js
|
117
|
+
- examples/rails-6/app/jobs/application_job.rb
|
118
|
+
- examples/rails-6/app/mailers/application_mailer.rb
|
119
|
+
- examples/rails-6/app/models/application_record.rb
|
120
|
+
- examples/rails-6/app/models/concerns/.keep
|
121
|
+
- examples/rails-6/app/models/post.rb
|
122
|
+
- examples/rails-6/app/views/layouts/application.html.erb
|
123
|
+
- examples/rails-6/app/views/layouts/mailer.html.erb
|
124
|
+
- examples/rails-6/app/views/layouts/mailer.text.erb
|
125
|
+
- examples/rails-6/app/views/posts/_form.html.erb
|
126
|
+
- examples/rails-6/app/views/posts/_post.json.jbuilder
|
127
|
+
- examples/rails-6/app/views/posts/edit.html.erb
|
128
|
+
- examples/rails-6/app/views/posts/index.html.erb
|
129
|
+
- examples/rails-6/app/views/posts/index.json.jbuilder
|
130
|
+
- examples/rails-6/app/views/posts/new.html.erb
|
131
|
+
- examples/rails-6/app/views/posts/show.html.erb
|
132
|
+
- examples/rails-6/app/views/posts/show.json.jbuilder
|
133
|
+
- examples/rails-6/babel.config.js
|
134
|
+
- examples/rails-6/bin/bundle
|
135
|
+
- examples/rails-6/bin/rails
|
136
|
+
- examples/rails-6/bin/rake
|
137
|
+
- examples/rails-6/bin/setup
|
138
|
+
- examples/rails-6/bin/webpack
|
139
|
+
- examples/rails-6/bin/webpack-dev-server
|
140
|
+
- examples/rails-6/bin/yarn
|
141
|
+
- examples/rails-6/config.ru
|
142
|
+
- examples/rails-6/config/application.rb
|
143
|
+
- examples/rails-6/config/boot.rb
|
144
|
+
- examples/rails-6/config/cable.yml
|
145
|
+
- examples/rails-6/config/credentials.yml.enc
|
146
|
+
- examples/rails-6/config/database.yml
|
147
|
+
- examples/rails-6/config/environment.rb
|
148
|
+
- examples/rails-6/config/environments/development.rb
|
149
|
+
- examples/rails-6/config/environments/production.rb
|
150
|
+
- examples/rails-6/config/environments/test.rb
|
151
|
+
- examples/rails-6/config/initializers/application_controller_renderer.rb
|
152
|
+
- examples/rails-6/config/initializers/assets.rb
|
153
|
+
- examples/rails-6/config/initializers/backtrace_silencers.rb
|
154
|
+
- examples/rails-6/config/initializers/content_security_policy.rb
|
155
|
+
- examples/rails-6/config/initializers/cookies_serializer.rb
|
156
|
+
- examples/rails-6/config/initializers/filter_parameter_logging.rb
|
157
|
+
- examples/rails-6/config/initializers/inflections.rb
|
158
|
+
- examples/rails-6/config/initializers/mime_types.rb
|
159
|
+
- examples/rails-6/config/initializers/power_trace.rb
|
160
|
+
- examples/rails-6/config/initializers/wrap_parameters.rb
|
161
|
+
- examples/rails-6/config/locales/en.yml
|
162
|
+
- examples/rails-6/config/puma.rb
|
163
|
+
- examples/rails-6/config/routes.rb
|
164
|
+
- examples/rails-6/config/storage.yml
|
165
|
+
- examples/rails-6/config/webpack/development.js
|
166
|
+
- examples/rails-6/config/webpack/environment.js
|
167
|
+
- examples/rails-6/config/webpack/production.js
|
168
|
+
- examples/rails-6/config/webpack/test.js
|
169
|
+
- examples/rails-6/config/webpacker.yml
|
170
|
+
- examples/rails-6/db/migrate/20200829063653_create_posts.rb
|
171
|
+
- examples/rails-6/db/seeds.rb
|
172
|
+
- examples/rails-6/lib/assets/.keep
|
173
|
+
- examples/rails-6/lib/tasks/.keep
|
174
|
+
- examples/rails-6/log/.keep
|
175
|
+
- examples/rails-6/package.json
|
176
|
+
- examples/rails-6/postcss.config.js
|
177
|
+
- examples/rails-6/public/404.html
|
178
|
+
- examples/rails-6/public/422.html
|
179
|
+
- examples/rails-6/public/500.html
|
180
|
+
- examples/rails-6/public/apple-touch-icon-precomposed.png
|
181
|
+
- examples/rails-6/public/apple-touch-icon.png
|
182
|
+
- examples/rails-6/public/favicon.ico
|
183
|
+
- examples/rails-6/public/robots.txt
|
184
|
+
- examples/rails-6/storage/.keep
|
185
|
+
- examples/rails-6/test/application_system_test_case.rb
|
186
|
+
- examples/rails-6/test/channels/application_cable/connection_test.rb
|
187
|
+
- examples/rails-6/test/controllers/.keep
|
188
|
+
- examples/rails-6/test/controllers/posts_controller_test.rb
|
189
|
+
- examples/rails-6/test/fixtures/.keep
|
190
|
+
- examples/rails-6/test/fixtures/files/.keep
|
191
|
+
- examples/rails-6/test/fixtures/posts.yml
|
192
|
+
- examples/rails-6/test/helpers/.keep
|
193
|
+
- examples/rails-6/test/integration/.keep
|
194
|
+
- examples/rails-6/test/mailers/.keep
|
195
|
+
- examples/rails-6/test/models/.keep
|
196
|
+
- examples/rails-6/test/models/post_test.rb
|
197
|
+
- examples/rails-6/test/system/.keep
|
198
|
+
- examples/rails-6/test/system/posts_test.rb
|
199
|
+
- examples/rails-6/test/test_helper.rb
|
200
|
+
- examples/rails-6/tmp/.keep
|
201
|
+
- examples/rails-6/tmp/pids/.keep
|
202
|
+
- examples/rails-6/vendor/.keep
|
203
|
+
- examples/rails-6/yarn.lock
|
81
204
|
- images/entries.png
|
82
205
|
- images/normal_backtrace.png
|
206
|
+
- images/normal_minitest_error.png
|
207
|
+
- images/normal_rails_error.png
|
83
208
|
- images/normal_rspec_error.png
|
209
|
+
- images/power_minitest_error.png
|
210
|
+
- images/power_rails_error.png
|
84
211
|
- images/power_trace_backtrace.png
|
85
212
|
- images/power_trace_rspec_error.png
|
86
213
|
- images/print_directly.png
|
@@ -88,7 +215,11 @@ files:
|
|
88
215
|
- lib/power_trace/entry.rb
|
89
216
|
- lib/power_trace/exception_patch.rb
|
90
217
|
- lib/power_trace/helpers/colorize_helper.rb
|
91
|
-
- lib/power_trace/
|
218
|
+
- lib/power_trace/integrations/minitest.rb
|
219
|
+
- lib/power_trace/integrations/rails.rb
|
220
|
+
- lib/power_trace/integrations/rspec.rb
|
221
|
+
- lib/power_trace/rails/action_dispatch/debug_exceptions.rb
|
222
|
+
- lib/power_trace/rails/action_dispatch/exception_wrapper.rb
|
92
223
|
- lib/power_trace/stack.rb
|
93
224
|
- lib/power_trace/version.rb
|
94
225
|
- power_trace.gemspec
|