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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +3 -18
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +124 -1
  5. data/README.md +70 -19
  6. data/examples/rails-6/.browserslistrc +1 -0
  7. data/examples/rails-6/.gitignore +41 -0
  8. data/examples/rails-6/.ruby-version +1 -0
  9. data/examples/rails-6/Gemfile +55 -0
  10. data/examples/rails-6/Gemfile.lock +233 -0
  11. data/examples/rails-6/README.md +24 -0
  12. data/examples/rails-6/Rakefile +6 -0
  13. data/examples/rails-6/app/assets/config/manifest.js +2 -0
  14. data/examples/rails-6/app/assets/images/.keep +0 -0
  15. data/examples/rails-6/app/assets/stylesheets/application.css +15 -0
  16. data/examples/rails-6/app/assets/stylesheets/posts.scss +3 -0
  17. data/examples/rails-6/app/assets/stylesheets/scaffolds.scss +65 -0
  18. data/examples/rails-6/app/channels/application_cable/channel.rb +4 -0
  19. data/examples/rails-6/app/channels/application_cable/connection.rb +4 -0
  20. data/examples/rails-6/app/controllers/application_controller.rb +2 -0
  21. data/examples/rails-6/app/controllers/concerns/.keep +0 -0
  22. data/examples/rails-6/app/controllers/posts_controller.rb +75 -0
  23. data/examples/rails-6/app/helpers/application_helper.rb +2 -0
  24. data/examples/rails-6/app/helpers/posts_helper.rb +2 -0
  25. data/examples/rails-6/app/javascript/channels/consumer.js +6 -0
  26. data/examples/rails-6/app/javascript/channels/index.js +5 -0
  27. data/examples/rails-6/app/javascript/packs/application.js +17 -0
  28. data/examples/rails-6/app/jobs/application_job.rb +7 -0
  29. data/examples/rails-6/app/mailers/application_mailer.rb +4 -0
  30. data/examples/rails-6/app/models/application_record.rb +3 -0
  31. data/examples/rails-6/app/models/concerns/.keep +0 -0
  32. data/examples/rails-6/app/models/post.rb +2 -0
  33. data/examples/rails-6/app/views/layouts/application.html.erb +15 -0
  34. data/examples/rails-6/app/views/layouts/mailer.html.erb +13 -0
  35. data/examples/rails-6/app/views/layouts/mailer.text.erb +1 -0
  36. data/examples/rails-6/app/views/posts/_form.html.erb +27 -0
  37. data/examples/rails-6/app/views/posts/_post.json.jbuilder +2 -0
  38. data/examples/rails-6/app/views/posts/edit.html.erb +6 -0
  39. data/examples/rails-6/app/views/posts/index.html.erb +29 -0
  40. data/examples/rails-6/app/views/posts/index.json.jbuilder +1 -0
  41. data/examples/rails-6/app/views/posts/new.html.erb +5 -0
  42. data/examples/rails-6/app/views/posts/show.html.erb +14 -0
  43. data/examples/rails-6/app/views/posts/show.json.jbuilder +1 -0
  44. data/examples/rails-6/babel.config.js +72 -0
  45. data/examples/rails-6/bin/bundle +114 -0
  46. data/examples/rails-6/bin/rails +9 -0
  47. data/examples/rails-6/bin/rake +9 -0
  48. data/examples/rails-6/bin/setup +36 -0
  49. data/examples/rails-6/bin/webpack +18 -0
  50. data/examples/rails-6/bin/webpack-dev-server +18 -0
  51. data/examples/rails-6/bin/yarn +11 -0
  52. data/examples/rails-6/config.ru +5 -0
  53. data/examples/rails-6/config/application.rb +19 -0
  54. data/examples/rails-6/config/boot.rb +4 -0
  55. data/examples/rails-6/config/cable.yml +10 -0
  56. data/examples/rails-6/config/credentials.yml.enc +1 -0
  57. data/examples/rails-6/config/database.yml +25 -0
  58. data/examples/rails-6/config/environment.rb +5 -0
  59. data/examples/rails-6/config/environments/development.rb +62 -0
  60. data/examples/rails-6/config/environments/production.rb +112 -0
  61. data/examples/rails-6/config/environments/test.rb +49 -0
  62. data/examples/rails-6/config/initializers/application_controller_renderer.rb +8 -0
  63. data/examples/rails-6/config/initializers/assets.rb +14 -0
  64. data/examples/rails-6/config/initializers/backtrace_silencers.rb +7 -0
  65. data/examples/rails-6/config/initializers/content_security_policy.rb +30 -0
  66. data/examples/rails-6/config/initializers/cookies_serializer.rb +5 -0
  67. data/examples/rails-6/config/initializers/filter_parameter_logging.rb +4 -0
  68. data/examples/rails-6/config/initializers/inflections.rb +16 -0
  69. data/examples/rails-6/config/initializers/mime_types.rb +4 -0
  70. data/examples/rails-6/config/initializers/power_trace.rb +3 -0
  71. data/examples/rails-6/config/initializers/wrap_parameters.rb +14 -0
  72. data/examples/rails-6/config/locales/en.yml +33 -0
  73. data/examples/rails-6/config/puma.rb +38 -0
  74. data/examples/rails-6/config/routes.rb +5 -0
  75. data/examples/rails-6/config/storage.yml +34 -0
  76. data/examples/rails-6/config/webpack/development.js +5 -0
  77. data/examples/rails-6/config/webpack/environment.js +3 -0
  78. data/examples/rails-6/config/webpack/production.js +5 -0
  79. data/examples/rails-6/config/webpack/test.js +5 -0
  80. data/examples/rails-6/config/webpacker.yml +96 -0
  81. data/examples/rails-6/db/migrate/20200829063653_create_posts.rb +10 -0
  82. data/examples/rails-6/db/seeds.rb +7 -0
  83. data/examples/rails-6/lib/assets/.keep +0 -0
  84. data/examples/rails-6/lib/tasks/.keep +0 -0
  85. data/examples/rails-6/log/.keep +0 -0
  86. data/examples/rails-6/package.json +15 -0
  87. data/examples/rails-6/postcss.config.js +12 -0
  88. data/examples/rails-6/public/404.html +67 -0
  89. data/examples/rails-6/public/422.html +67 -0
  90. data/examples/rails-6/public/500.html +66 -0
  91. data/examples/rails-6/public/apple-touch-icon-precomposed.png +0 -0
  92. data/examples/rails-6/public/apple-touch-icon.png +0 -0
  93. data/examples/rails-6/public/favicon.ico +0 -0
  94. data/examples/rails-6/public/robots.txt +1 -0
  95. data/examples/rails-6/storage/.keep +0 -0
  96. data/examples/rails-6/test/application_system_test_case.rb +5 -0
  97. data/examples/rails-6/test/channels/application_cable/connection_test.rb +11 -0
  98. data/examples/rails-6/test/controllers/.keep +0 -0
  99. data/examples/rails-6/test/controllers/posts_controller_test.rb +48 -0
  100. data/examples/rails-6/test/fixtures/.keep +0 -0
  101. data/examples/rails-6/test/fixtures/files/.keep +0 -0
  102. data/examples/rails-6/test/fixtures/posts.yml +9 -0
  103. data/examples/rails-6/test/helpers/.keep +0 -0
  104. data/examples/rails-6/test/integration/.keep +0 -0
  105. data/examples/rails-6/test/mailers/.keep +0 -0
  106. data/examples/rails-6/test/models/.keep +0 -0
  107. data/examples/rails-6/test/models/post_test.rb +7 -0
  108. data/examples/rails-6/test/system/.keep +0 -0
  109. data/examples/rails-6/test/system/posts_test.rb +45 -0
  110. data/examples/rails-6/test/test_helper.rb +13 -0
  111. data/examples/rails-6/tmp/.keep +0 -0
  112. data/examples/rails-6/tmp/pids/.keep +0 -0
  113. data/examples/rails-6/vendor/.keep +0 -0
  114. data/examples/rails-6/yarn.lock +7593 -0
  115. data/images/normal_minitest_error.png +0 -0
  116. data/images/normal_rails_error.png +0 -0
  117. data/images/power_minitest_error.png +0 -0
  118. data/images/power_rails_error.png +0 -0
  119. data/lib/power_trace.rb +24 -7
  120. data/lib/power_trace/entry.rb +75 -10
  121. data/lib/power_trace/exception_patch.rb +1 -1
  122. data/lib/power_trace/integrations/minitest.rb +14 -0
  123. data/lib/power_trace/integrations/rails.rb +2 -0
  124. data/lib/power_trace/integrations/rspec.rb +11 -0
  125. data/lib/power_trace/rails/action_dispatch/debug_exceptions.rb +28 -0
  126. data/lib/power_trace/rails/action_dispatch/exception_wrapper.rb +28 -0
  127. data/lib/power_trace/version.rb +1 -1
  128. data/power_trace.gemspec +1 -0
  129. metadata +134 -3
  130. data/lib/power_trace/rspec_patch.rb +0 -15
@@ -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 :power_rspec_trace, instance_accessor: false
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
@@ -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 = colloct_locals_and_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 = "\s" * options[:extra_info_indent]
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] + "\s" * 2
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.to_s.truncate(truncation, omission: "...}")
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
- value.to_s.truncate(truncation)
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 colloct_locals_and_arguments
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,2 @@
1
+ require "power_trace/rails/action_dispatch/debug_exceptions"
2
+ require "power_trace/rails/action_dispatch/exception_wrapper"
@@ -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
@@ -1,3 +1,3 @@
1
1
  module PowerTrace
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -32,4 +32,5 @@ So I hope to solve this problem by adding some additional runtime info to the ba
32
32
  spec.add_dependency "binding_of_caller", "~> 0.8.0"
33
33
 
34
34
  spec.add_development_dependency "pry"
35
+ spec.add_development_dependency "rails"
35
36
  end
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.2.2
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-07-16 00:00:00.000000000 Z
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/rspec_patch.rb
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