better_errors 2.0.0 → 2.8.0

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.
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"