better_errors 2.0.0 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +5 -5
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +3 -0
  4. data/.travis.yml +96 -2
  5. data/CHANGELOG.md +1 -1
  6. data/Gemfile +2 -7
  7. data/LICENSE.txt +1 -1
  8. data/README.md +99 -39
  9. data/better_errors.gemspec +23 -4
  10. data/gemfiles/pry010.gemfile +9 -0
  11. data/gemfiles/pry011.gemfile +8 -0
  12. data/gemfiles/pry09.gemfile +8 -0
  13. data/gemfiles/rack.gemfile +7 -0
  14. data/gemfiles/rack_boc.gemfile +8 -0
  15. data/gemfiles/rails42.gemfile +9 -0
  16. data/gemfiles/rails42_boc.gemfile +10 -0
  17. data/gemfiles/rails42_haml.gemfile +10 -0
  18. data/gemfiles/rails50.gemfile +8 -0
  19. data/gemfiles/rails50_boc.gemfile +9 -0
  20. data/gemfiles/rails50_haml.gemfile +9 -0
  21. data/gemfiles/rails51.gemfile +8 -0
  22. data/gemfiles/rails51_boc.gemfile +9 -0
  23. data/gemfiles/rails51_haml.gemfile +9 -0
  24. data/gemfiles/rails52.gemfile +8 -0
  25. data/gemfiles/rails52_boc.gemfile +9 -0
  26. data/gemfiles/rails52_haml.gemfile +9 -0
  27. data/gemfiles/rails60.gemfile +7 -0
  28. data/gemfiles/rails60_boc.gemfile +8 -0
  29. data/gemfiles/rails60_haml.gemfile +8 -0
  30. data/lib/better_errors/code_formatter/html.rb +1 -1
  31. data/lib/better_errors/code_formatter.rb +7 -7
  32. data/lib/better_errors/error_page.rb +56 -15
  33. data/lib/better_errors/inspectable_value.rb +45 -0
  34. data/lib/better_errors/middleware.rb +96 -16
  35. data/lib/better_errors/raised_exception.rb +13 -3
  36. data/lib/better_errors/repl/basic.rb +3 -3
  37. data/lib/better_errors/repl/pry.rb +18 -8
  38. data/lib/better_errors/repl.rb +6 -4
  39. data/lib/better_errors/stack_frame.rb +33 -8
  40. data/lib/better_errors/templates/main.erb +71 -34
  41. data/lib/better_errors/templates/text.erb +2 -2
  42. data/lib/better_errors/templates/variable_info.erb +32 -23
  43. data/lib/better_errors/version.rb +1 -1
  44. data/lib/better_errors.rb +21 -3
  45. metadata +118 -35
  46. data/Rakefile +0 -13
  47. data/spec/better_errors/code_formatter_spec.rb +0 -92
  48. data/spec/better_errors/error_page_spec.rb +0 -76
  49. data/spec/better_errors/middleware_spec.rb +0 -154
  50. data/spec/better_errors/raised_exception_spec.rb +0 -52
  51. data/spec/better_errors/repl/basic_spec.rb +0 -18
  52. data/spec/better_errors/repl/pry_spec.rb +0 -40
  53. data/spec/better_errors/repl/shared_examples.rb +0 -18
  54. data/spec/better_errors/stack_frame_spec.rb +0 -157
  55. data/spec/better_errors/support/my_source.rb +0 -20
  56. data/spec/better_errors_spec.rb +0 -73
  57. data/spec/spec_helper.rb +0 -5
  58. data/spec/without_binding_of_caller.rb +0 -9
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title><%= exception.type %> at <%= request_path %></title>
4
+ <title><%= exception_type %> at <%= request_path %></title>
5
5
  </head>
6
6
  <body>
7
7
  <%# Stylesheets are placed in the <body> for Turbolinks compatibility. %>
@@ -146,6 +146,14 @@
146
146
  }
147
147
 
148
148
  /* Heading */
149
+ header.exception .fix-actions {
150
+ margin-top: .5em;
151
+ }
152
+
153
+ header.exception .fix-actions input[type=submit] {
154
+ font-weight: bold;
155
+ }
156
+
149
157
  header.exception h2 {
150
158
  font-weight: 200;
151
159
  font-size: 11pt;
@@ -153,7 +161,7 @@
153
161
 
154
162
  header.exception h2,
155
163
  header.exception p {
156
- line-height: 1.4em;
164
+ line-height: 1.5em;
157
165
  overflow: hidden;
158
166
  white-space: pre;
159
167
  text-overflow: ellipsis;
@@ -166,7 +174,7 @@
166
174
 
167
175
  header.exception p {
168
176
  font-weight: 200;
169
- font-size: 20pt;
177
+ font-size: 17pt;
170
178
  color: white;
171
179
  }
172
180
 
@@ -182,7 +190,7 @@
182
190
  word-wrap: break-word;
183
191
  white-space: pre-wrap;
184
192
  height: auto;
185
- max-height: 7em;
193
+ max-height: 7.5em;
186
194
  }
187
195
 
188
196
  @media screen and (max-width: 1100px) {
@@ -394,7 +402,7 @@
394
402
  * Monospace
395
403
  * --------------------------------------------------------------------- */
396
404
 
397
- pre, code, .repl input, .repl .prompt span, textarea, .code_linenums {
405
+ pre, code, .be-repl input, .be-repl .command-line span, textarea, .code_linenums {
398
406
  font-family: menlo, lucida console, monospace;
399
407
  font-size: 8pt;
400
408
  }
@@ -460,7 +468,7 @@
460
468
  font-weight: 200;
461
469
  }
462
470
 
463
- .code, .console, .unavailable {
471
+ .code, .be-console, .unavailable {
464
472
  background: #fff;
465
473
  padding: 5px;
466
474
 
@@ -532,13 +540,13 @@
532
540
  }
533
541
 
534
542
  /* REPL shell */
535
- .console {
543
+ .be-console {
536
544
  padding: 0 1px 10px 1px;
537
545
  border-bottom-left-radius: 2px;
538
546
  border-bottom-right-radius: 2px;
539
547
  }
540
548
 
541
- .console pre {
549
+ .be-console pre {
542
550
  padding: 10px 10px 0 10px;
543
551
  max-height: 400px;
544
552
  overflow-x: none;
@@ -548,30 +556,31 @@
548
556
  white-space: pre-wrap;
549
557
  }
550
558
 
551
- /* .prompt > span + input */
552
- .console .prompt {
559
+ /* .command-line > span + input */
560
+ .be-console .command-line {
553
561
  display: table;
554
562
  width: 100%;
555
563
  }
556
564
 
557
- .console .prompt span,
558
- .console .prompt input {
565
+ .be-console .command-line span,
566
+ .be-console .command-line input {
559
567
  display: table-cell;
560
568
  }
561
569
 
562
- .console .prompt span {
570
+ .be-console .command-line span {
563
571
  width: 1%;
564
572
  padding-right: 5px;
565
573
  padding-left: 10px;
574
+ white-space: pre;
566
575
  }
567
576
 
568
- .console .prompt input {
577
+ .be-console .command-line input {
569
578
  width: 99%;
570
579
  }
571
580
 
572
581
  /* Input box */
573
- .console input,
574
- .console input:focus {
582
+ .be-console input,
583
+ .be-console input:focus {
575
584
  outline: 0;
576
585
  border: 0;
577
586
  padding: 0;
@@ -669,14 +678,14 @@
669
678
 
670
679
  nav.sidebar::-webkit-scrollbar,
671
680
  .inset pre::-webkit-scrollbar,
672
- .console pre::-webkit-scrollbar,
681
+ .be-console pre::-webkit-scrollbar,
673
682
  .code::-webkit-scrollbar {
674
683
  width: 10px;
675
684
  height: 10px;
676
685
  }
677
686
 
678
687
  .inset pre::-webkit-scrollbar-thumb,
679
- .console pre::-webkit-scrollbar-thumb,
688
+ .be-console pre::-webkit-scrollbar-thumb,
680
689
  .code::-webkit-scrollbar-thumb {
681
690
  background: #ccc;
682
691
  border-radius: 5px;
@@ -692,7 +701,7 @@
692
701
  background: -webkit-linear-gradient(left, #aaa, #999);
693
702
  }
694
703
 
695
- .console pre:hover::-webkit-scrollbar-thumb,
704
+ .be-console pre:hover::-webkit-scrollbar-thumb,
696
705
  .inset pre:hover::-webkit-scrollbar-thumb,
697
706
  .code:hover::-webkit-scrollbar-thumb {
698
707
  background: #888;
@@ -720,19 +729,41 @@
720
729
  if(document.styleSheets[i].href)
721
730
  document.styleSheets[i].disabled = true;
722
731
  }
723
- document.addEventListener("page:restore", function restoreCSS(e) {
724
- for(var i=0; i < document.styleSheets.length; i++) {
725
- document.styleSheets[i].disabled = false;
726
- }
727
- document.removeEventListener("page:restore", restoreCSS, false);
728
- });
732
+ if (window.Turbolinks.controller) {
733
+ // Turbolinks > 5 (see https://github.com/turbolinks/turbolinks/issues/6)
734
+ document.addEventListener("turbolinks:load", function restoreCSS(e) {
735
+ for(var i=0; i < document.styleSheets.length; i++) {
736
+ document.styleSheets[i].disabled = false;
737
+ }
738
+ document.removeEventListener("turbolinks:load", restoreCSS, false);
739
+ });
740
+ } else {
741
+ document.addEventListener("page:restore", function restoreCSS(e) {
742
+ for(var i=0; i < document.styleSheets.length; i++) {
743
+ document.styleSheets[i].disabled = false;
744
+ }
745
+ document.removeEventListener("page:restore", restoreCSS, false);
746
+ });
747
+ }
729
748
  }
730
749
  </script>
731
750
 
732
751
  <div class='top'>
733
752
  <header class="exception">
734
- <h2><strong><%= exception.type %></strong> <span>at <%= request_path %></span></h2>
735
- <p><%= exception.message %></p>
753
+ <h2><strong><%= exception_type %></strong> <span>at <%= request_path %></span></h2>
754
+ <p><%= exception_message %></p>
755
+ <% unless active_support_actions.empty? %>
756
+ <div class='fix-actions'>
757
+ <% active_support_actions.each do |action, _| %>
758
+ <form class="button_to" method="post" action="<%= action_dispatch_action_endpoint %>">
759
+ <input type="submit" value="<%= action %>">
760
+ <input type="hidden" name="action" value="<%= action %>">
761
+ <input type="hidden" name="error" value="<%= exception_type %>">
762
+ <input type="hidden" name="location" value="<%= request_path %>">
763
+ </form>
764
+ <% end %>
765
+ </div>
766
+ <% end %>
736
767
  </header>
737
768
  </div>
738
769
 
@@ -769,6 +800,7 @@
769
800
  (function() {
770
801
 
771
802
  var OID = "<%= id %>";
803
+ var csrfToken = "<%= csrf_token %>";
772
804
 
773
805
  var previousFrame = null;
774
806
  var previousFrameInfo = null;
@@ -777,8 +809,9 @@
777
809
 
778
810
  function apiCall(method, opts, cb) {
779
811
  var req = new XMLHttpRequest();
780
- req.open("POST", <%== uri_prefix.gsub("<", "&lt;").inspect %> + "/__better_errors/" + OID + "/" + method, true);
812
+ req.open("POST", "//" + window.location.host + <%== uri_prefix.gsub("<", "&lt;").inspect %> + "/__better_errors/" + OID + "/" + method, true);
781
813
  req.setRequestHeader("Content-Type", "application/json");
814
+ opts.csrfToken = csrfToken;
782
815
  req.send(JSON.stringify(opts));
783
816
  req.onreadystatechange = function() {
784
817
  if(req.readyState == 4) {
@@ -809,7 +842,7 @@
809
842
  REPL.prototype.install = function(containerElement) {
810
843
  this.container = containerElement;
811
844
 
812
- this.promptElement = this.container.querySelector(".prompt span");
845
+ this.promptElement = this.container.querySelector(".command-line .prompt");
813
846
  this.inputElement = this.container.querySelector("input");
814
847
  this.outputElement = this.container.querySelector("pre");
815
848
 
@@ -875,6 +908,7 @@
875
908
  this.previousCommandOffset = previousCommands.push(text);
876
909
  if(previousCommands.length > 100) {
877
910
  previousCommands.splice(0, 1);
911
+ this.previousCommandOffset -= 1;
878
912
  }
879
913
  localStorage.setItem("better_errors_previous_commands", JSON.stringify(previousCommands));
880
914
  }
@@ -923,7 +957,7 @@
923
957
 
924
958
  el.style.display = "block";
925
959
 
926
- var replInput = el.querySelector('.console input');
960
+ var replInput = el.querySelector('.be-console input');
927
961
  if (replInput) replInput.focus();
928
962
  }
929
963
 
@@ -937,17 +971,20 @@
937
971
  apiCall("variables", { "index": index }, function(response) {
938
972
  el.loaded = true;
939
973
  if(response.error) {
940
- el.innerHTML = "<span class='error'>" + escapeHTML(response.error) + "</span>";
974
+ el.innerHTML = "<h2 class='error'>" + escapeHTML(response.error) + "</h2>";
975
+ if(response.explanation) {
976
+ el.innerHTML += "<p class='explanation'>" + escapeHTML(response.explanation) + "</p>";
977
+ }
978
+ el.innerHTML += "<p><a target='_new' href='https://github.com/BetterErrors/better_errors'>More about Better Errors</a></p>";
941
979
  } else {
942
980
  el.innerHTML = response.html;
943
981
 
944
- var repl = el.querySelector(".repl .console");
982
+ var repl = el.querySelector(".be-repl .be-console");
945
983
  if(repl) {
946
984
  new REPL(index).install(repl);
947
985
  }
948
-
949
- switchTo(el);
950
986
  }
987
+ switchTo(el);
951
988
  });
952
989
  }
953
990
  }
@@ -1,6 +1,6 @@
1
- <%== text_heading("=", "%s at %s" % [exception.type, request_path]) %>
1
+ <%== text_heading("=", "%s at %s" % [exception_type, request_path]) %>
2
2
 
3
- > <%== exception.message %>
3
+ > <%== exception_message %>
4
4
  <% if backtrace_frames.any? %>
5
5
 
6
6
  <%== text_heading("-", "%s, line %i" % [first_frame.pretty_path, first_frame.line]) %>
@@ -1,17 +1,24 @@
1
1
  <header class="trace_info clearfix">
2
2
  <div class="title">
3
3
  <h2 class="name"><%= @frame.name %></h2>
4
- <div class="location"><span class="filename"><a href="<%= editor_url(@frame) %>"><%= @frame.pretty_path %></a></span></div>
4
+ <div class="location">
5
+ <span class="filename">
6
+ <a
7
+ href="<%= editor_url(@frame) %>"
8
+ <%= ENV.key?('BETTER_ERRORS_INSIDE_FRAME') ? "target=_blank" : '' %>
9
+ ><%= @frame.pretty_path %></a>
10
+ </span>
11
+ </div>
5
12
  </div>
6
13
  <div class="code_block clearfix">
7
14
  <%== html_formatted_code_block @frame %>
8
15
  </div>
9
16
 
10
17
  <% if BetterErrors.binding_of_caller_available? && @frame.frame_binding %>
11
- <div class="repl">
12
- <div class="console">
18
+ <div class="be-repl">
19
+ <div class="be-console">
13
20
  <pre></pre>
14
- <div class="prompt"><span>&gt;&gt;</span> <input/></div>
21
+ <div class="command-line"><span class='prompt'>&gt;&gt;</span> <input tabindex="1"/></div>
15
22
  </div>
16
23
  </div>
17
24
  <% end %>
@@ -45,26 +52,28 @@
45
52
  </div>
46
53
  </div>
47
54
 
48
- <div class="sub">
49
- <h3>Local Variables</h3>
50
- <div class='inset variables'>
51
- <table class="var_table">
52
- <% @frame.local_variables.each do |name, value| %>
53
- <tr><td class="name"><%= name %></td><td><pre><%== inspect_value value %></pre></td></tr>
54
- <% end %>
55
- </table>
55
+ <% if BetterErrors.binding_of_caller_available? && @frame.frame_binding %>
56
+ <div class="sub">
57
+ <h3>Local Variables</h3>
58
+ <div class='inset variables'>
59
+ <table class="var_table">
60
+ <% @frame.local_variables.each do |name, value| %>
61
+ <tr><td class="name"><%= name %></td><td><pre><%== inspect_value value %></pre></td></tr>
62
+ <% end %>
63
+ </table>
64
+ </div>
56
65
  </div>
57
- </div>
58
66
 
59
- <div class="sub">
60
- <h3>Instance Variables</h3>
61
- <div class="inset variables">
62
- <table class="var_table">
63
- <% @frame.instance_variables.each do |name, value| %>
64
- <tr><td class="name"><%= name %></td><td><pre><%== inspect_value value %></pre></td></tr>
65
- <% end %>
66
- </table>
67
+ <div class="sub">
68
+ <h3>Instance Variables</h3>
69
+ <div class="inset variables">
70
+ <table class="var_table">
71
+ <% @frame.instance_variables.each do |name, value| %>
72
+ <tr><td class="name"><%= name %></td><td><pre><%== inspect_value value %></pre></td></tr>
73
+ <% end %>
74
+ </table>
75
+ </div>
67
76
  </div>
68
- </div>
69
77
 
70
- <!-- <%= Time.now.to_f - @var_start_time %> seconds -->
78
+ <!-- <%= Time.now.to_f - @var_start_time %> seconds -->
79
+ <% end %>
@@ -1,3 +1,3 @@
1
1
  module BetterErrors
2
- VERSION = "2.0.0"
2
+ VERSION = "2.8.0"
3
3
  end
data/lib/better_errors.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  require "pp"
2
- require "erubis"
2
+ require "erubi"
3
3
  require "coderay"
4
4
  require "uri"
5
5
 
6
6
  require "better_errors/code_formatter"
7
+ require "better_errors/inspectable_value"
7
8
  require "better_errors/error_page"
8
9
  require "better_errors/middleware"
9
10
  require "better_errors/raised_exception"
@@ -17,6 +18,11 @@ module BetterErrors
17
18
  { symbols: [:macvim, :mvim], sniff: /vim/i, url: proc { |file, line| "mvim://open?url=file://#{file}&line=#{line}" } },
18
19
  { symbols: [:sublime, :subl, :st], sniff: /subl/i, url: "subl://open?url=file://%{file}&line=%{line}" },
19
20
  { symbols: [:textmate, :txmt, :tm], sniff: /mate/i, url: "txmt://open?url=file://%{file}&line=%{line}" },
21
+ { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" },
22
+ { symbols: [:rubymine], sniff: /mine/i, url: "x-mine://open?file=%{file}&line=%{line}" },
23
+ { symbols: [:vscode, :code], sniff: /code/i, url: "vscode://file/%{file}:%{line}" },
24
+ { symbols: [:vscodium, :codium], sniff: /codium/i, url: "vscodium://file/%{file}:%{line}" },
25
+ { symbols: [:atom], sniff: /atom/i, url: "atom://core/open/file?filename=%{file}&line=%{line}" },
20
26
  ]
21
27
 
22
28
  class << self
@@ -44,8 +50,19 @@ module BetterErrors
44
50
  # The ignored instance variables.
45
51
  # @return [Array]
46
52
  attr_accessor :ignored_instance_variables
53
+
54
+ # The maximum variable payload size. If variable.inspect exceeds this,
55
+ # the variable won't be returned.
56
+ # @return int
57
+ attr_accessor :maximum_variable_inspect_size
58
+
59
+ # List of classes that are excluded from inspection.
60
+ # @return [Array]
61
+ attr_accessor :ignored_classes
47
62
  end
48
63
  @ignored_instance_variables = []
64
+ @maximum_variable_inspect_size = 100_000
65
+ @ignored_classes = ['ActionDispatch::Request', 'ActionDispatch::Response']
49
66
 
50
67
  # Returns a proc, which when called with a filename and line number argument,
51
68
  # returns a URL to open the filename and line in the selected editor.
@@ -68,6 +85,7 @@ module BetterErrors
68
85
  # * `:textmate`, `:txmt`, `:tm`
69
86
  # * `:sublime`, `:subl`, `:st`
70
87
  # * `:macvim`
88
+ # * `:atom`
71
89
  #
72
90
  # @param [Symbol] sym
73
91
  #
@@ -117,7 +135,7 @@ module BetterErrors
117
135
  # Enables experimental Pry support in the inline REPL
118
136
  #
119
137
  # If you encounter problems while using Pry, *please* file a bug report at
120
- # https://github.com/charliesome/better_errors/issues
138
+ # https://github.com/BetterErrors/better_errors/issues
121
139
  def self.use_pry!
122
140
  REPL::PROVIDERS.unshift const: :Pry, impl: "better_errors/repl/pry"
123
141
  end
@@ -139,7 +157,7 @@ begin
139
157
  require "binding_of_caller"
140
158
  require "better_errors/exception_extension"
141
159
  BetterErrors.binding_of_caller_available = true
142
- rescue LoadError => e
160
+ rescue LoadError
143
161
  BetterErrors.binding_of_caller_available = false
144
162
  end
145
163
 
metadata CHANGED
@@ -1,29 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_errors
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charlie Somerville
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-20 00:00:00.000000000 Z
11
+ date: 2020-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: erubis
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '10.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '10.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-html-matchers
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-its
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: yard
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'
83
+ - !ruby/object:Gem::Dependency
84
+ name: kramdown
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.0.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: erubi
15
99
  requirement: !ruby/object:Gem::Requirement
16
100
  requirements:
17
101
  - - ">="
18
102
  - !ruby/object:Gem::Version
19
- version: 2.6.6
103
+ version: 1.0.0
20
104
  type: :runtime
21
105
  prerelease: false
22
106
  version_requirements: !ruby/object:Gem::Requirement
23
107
  requirements:
24
108
  - - ">="
25
109
  - !ruby/object:Gem::Version
26
- version: 2.6.6
110
+ version: 1.0.0
27
111
  - !ruby/object:Gem::Dependency
28
112
  name: coderay
29
113
  requirement: !ruby/object:Gem::Requirement
@@ -61,6 +145,7 @@ executables: []
61
145
  extensions: []
62
146
  extra_rdoc_files: []
63
147
  files:
148
+ - ".coveralls.yml"
64
149
  - ".gitignore"
65
150
  - ".travis.yml"
66
151
  - ".yardopts"
@@ -68,14 +153,34 @@ files:
68
153
  - Gemfile
69
154
  - LICENSE.txt
70
155
  - README.md
71
- - Rakefile
72
156
  - better_errors.gemspec
157
+ - gemfiles/pry010.gemfile
158
+ - gemfiles/pry011.gemfile
159
+ - gemfiles/pry09.gemfile
160
+ - gemfiles/rack.gemfile
161
+ - gemfiles/rack_boc.gemfile
162
+ - gemfiles/rails42.gemfile
163
+ - gemfiles/rails42_boc.gemfile
164
+ - gemfiles/rails42_haml.gemfile
165
+ - gemfiles/rails50.gemfile
166
+ - gemfiles/rails50_boc.gemfile
167
+ - gemfiles/rails50_haml.gemfile
168
+ - gemfiles/rails51.gemfile
169
+ - gemfiles/rails51_boc.gemfile
170
+ - gemfiles/rails51_haml.gemfile
171
+ - gemfiles/rails52.gemfile
172
+ - gemfiles/rails52_boc.gemfile
173
+ - gemfiles/rails52_haml.gemfile
174
+ - gemfiles/rails60.gemfile
175
+ - gemfiles/rails60_boc.gemfile
176
+ - gemfiles/rails60_haml.gemfile
73
177
  - lib/better_errors.rb
74
178
  - lib/better_errors/code_formatter.rb
75
179
  - lib/better_errors/code_formatter/html.rb
76
180
  - lib/better_errors/code_formatter/text.rb
77
181
  - lib/better_errors/error_page.rb
78
182
  - lib/better_errors/exception_extension.rb
183
+ - lib/better_errors/inspectable_value.rb
79
184
  - lib/better_errors/middleware.rb
80
185
  - lib/better_errors/rails.rb
81
186
  - lib/better_errors/raised_exception.rb
@@ -87,22 +192,13 @@ files:
87
192
  - lib/better_errors/templates/text.erb
88
193
  - lib/better_errors/templates/variable_info.erb
89
194
  - lib/better_errors/version.rb
90
- - spec/better_errors/code_formatter_spec.rb
91
- - spec/better_errors/error_page_spec.rb
92
- - spec/better_errors/middleware_spec.rb
93
- - spec/better_errors/raised_exception_spec.rb
94
- - spec/better_errors/repl/basic_spec.rb
95
- - spec/better_errors/repl/pry_spec.rb
96
- - spec/better_errors/repl/shared_examples.rb
97
- - spec/better_errors/stack_frame_spec.rb
98
- - spec/better_errors/support/my_source.rb
99
- - spec/better_errors_spec.rb
100
- - spec/spec_helper.rb
101
- - spec/without_binding_of_caller.rb
102
- homepage: https://github.com/charliesome/better_errors
195
+ homepage: https://github.com/BetterErrors/better_errors
103
196
  licenses:
104
197
  - MIT
105
- metadata: {}
198
+ metadata:
199
+ changelog_uri: https://github.com/BetterErrors/better_errors/releases
200
+ source_code_uri: https://github.com/BetterErrors/better_errors
201
+ bug_tracker_uri: https://github.com/BetterErrors/better_errors/issues
106
202
  post_install_message:
107
203
  rdoc_options: []
108
204
  require_paths:
@@ -118,21 +214,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
214
  - !ruby/object:Gem::Version
119
215
  version: '0'
120
216
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.2.2
217
+ rubygems_version: 3.1.2
123
218
  signing_key:
124
219
  specification_version: 4
125
220
  summary: Better error page for Rails and other Rack apps
126
- test_files:
127
- - spec/better_errors/code_formatter_spec.rb
128
- - spec/better_errors/error_page_spec.rb
129
- - spec/better_errors/middleware_spec.rb
130
- - spec/better_errors/raised_exception_spec.rb
131
- - spec/better_errors/repl/basic_spec.rb
132
- - spec/better_errors/repl/pry_spec.rb
133
- - spec/better_errors/repl/shared_examples.rb
134
- - spec/better_errors/stack_frame_spec.rb
135
- - spec/better_errors/support/my_source.rb
136
- - spec/better_errors_spec.rb
137
- - spec/spec_helper.rb
138
- - spec/without_binding_of_caller.rb
221
+ test_files: []
data/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- namespace :test do
5
- RSpec::Core::RakeTask.new(:with_binding_of_caller)
6
-
7
- without_task = RSpec::Core::RakeTask.new(:without_binding_of_caller)
8
- without_task.ruby_opts = "-I spec -r without_binding_of_caller"
9
-
10
- task :all => [:with_binding_of_caller, :without_binding_of_caller]
11
- end
12
-
13
- task :default => "test:all"