better_errors-creditkudos 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.travis.yml +8 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +128 -0
- data/Rakefile +13 -0
- data/better_errors-creditkudos.gemspec +28 -0
- data/lib/better_errors.rb +152 -0
- data/lib/better_errors/code_formatter.rb +63 -0
- data/lib/better_errors/code_formatter/html.rb +26 -0
- data/lib/better_errors/code_formatter/text.rb +14 -0
- data/lib/better_errors/error_page.rb +129 -0
- data/lib/better_errors/exception_extension.rb +17 -0
- data/lib/better_errors/middleware.rb +141 -0
- data/lib/better_errors/rails.rb +28 -0
- data/lib/better_errors/raised_exception.rb +68 -0
- data/lib/better_errors/repl.rb +30 -0
- data/lib/better_errors/repl/basic.rb +20 -0
- data/lib/better_errors/repl/pry.rb +78 -0
- data/lib/better_errors/stack_frame.rb +111 -0
- data/lib/better_errors/templates/main.erb +1032 -0
- data/lib/better_errors/templates/text.erb +21 -0
- data/lib/better_errors/templates/variable_info.erb +72 -0
- data/lib/better_errors/version.rb +3 -0
- data/spec/better_errors/code_formatter_spec.rb +92 -0
- data/spec/better_errors/error_page_spec.rb +122 -0
- data/spec/better_errors/middleware_spec.rb +180 -0
- data/spec/better_errors/raised_exception_spec.rb +72 -0
- data/spec/better_errors/repl/basic_spec.rb +18 -0
- data/spec/better_errors/repl/pry_spec.rb +40 -0
- data/spec/better_errors/repl/shared_examples.rb +18 -0
- data/spec/better_errors/stack_frame_spec.rb +157 -0
- data/spec/better_errors/support/my_source.rb +20 -0
- data/spec/better_errors_spec.rb +73 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/without_binding_of_caller.rb +9 -0
- metadata +136 -0
@@ -0,0 +1,72 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module BetterErrors
|
4
|
+
describe RaisedException do
|
5
|
+
let(:exception) { RuntimeError.new("whoops") }
|
6
|
+
subject { RaisedException.new(exception) }
|
7
|
+
|
8
|
+
its(:exception) { should == exception }
|
9
|
+
its(:message) { should == "whoops" }
|
10
|
+
its(:type) { should == RuntimeError }
|
11
|
+
|
12
|
+
context "when the exception wraps another exception" do
|
13
|
+
let(:original_exception) { RuntimeError.new("something went wrong!") }
|
14
|
+
let(:exception) { double(:original_exception => original_exception) }
|
15
|
+
|
16
|
+
its(:exception) { should == original_exception }
|
17
|
+
its(:message) { should == "something went wrong!" }
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the exception is a syntax error" do
|
21
|
+
let(:exception) { SyntaxError.new("foo.rb:123: you made a typo!") }
|
22
|
+
|
23
|
+
its(:message) { should == "you made a typo!" }
|
24
|
+
its(:type) { should == SyntaxError }
|
25
|
+
|
26
|
+
it "has the right filename and line number in the backtrace" do
|
27
|
+
subject.backtrace.first.filename.should == "foo.rb"
|
28
|
+
subject.backtrace.first.line.should == 123
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "when the exception is a HAML syntax error" do
|
33
|
+
before do
|
34
|
+
stub_const("Haml::SyntaxError", Class.new(SyntaxError))
|
35
|
+
end
|
36
|
+
|
37
|
+
let(:exception) {
|
38
|
+
Haml::SyntaxError.new("you made a typo!").tap do |ex|
|
39
|
+
ex.set_backtrace(["foo.rb:123", "haml/internals/blah.rb:123456"])
|
40
|
+
end
|
41
|
+
}
|
42
|
+
|
43
|
+
its(:message) { should == "you made a typo!" }
|
44
|
+
its(:type) { should == Haml::SyntaxError }
|
45
|
+
|
46
|
+
it "has the right filename and line number in the backtrace" do
|
47
|
+
subject.backtrace.first.filename.should == "foo.rb"
|
48
|
+
subject.backtrace.first.line.should == 123
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "when the exception is a Coffeelint syntax error" do
|
53
|
+
before do
|
54
|
+
stub_const("Sprockets::Coffeelint::Error", Class.new(SyntaxError))
|
55
|
+
end
|
56
|
+
|
57
|
+
let(:exception) {
|
58
|
+
Sprockets::Coffeelint::Error.new("[stdin]:11:88: error: unexpected=").tap do |ex|
|
59
|
+
ex.set_backtrace(["app/assets/javascripts/files/index.coffee:11", "sprockets/coffeelint.rb:3"])
|
60
|
+
end
|
61
|
+
}
|
62
|
+
|
63
|
+
its(:message) { should == "[stdin]:11:88: error: unexpected=" }
|
64
|
+
its(:type) { should == Sprockets::Coffeelint::Error }
|
65
|
+
|
66
|
+
it "has the right filename and line number in the backtrace" do
|
67
|
+
subject.backtrace.first.filename.should == "app/assets/javascripts/files/index.coffee"
|
68
|
+
subject.backtrace.first.line.should == 11
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "better_errors/repl/basic"
|
3
|
+
require "better_errors/repl/shared_examples"
|
4
|
+
|
5
|
+
module BetterErrors
|
6
|
+
module REPL
|
7
|
+
describe Basic do
|
8
|
+
let(:fresh_binding) {
|
9
|
+
local_a = 123
|
10
|
+
binding
|
11
|
+
}
|
12
|
+
|
13
|
+
let(:repl) { Basic.new fresh_binding }
|
14
|
+
|
15
|
+
it_behaves_like "a REPL provider"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "pry"
|
3
|
+
require "better_errors/repl/pry"
|
4
|
+
require "better_errors/repl/shared_examples"
|
5
|
+
|
6
|
+
module BetterErrors
|
7
|
+
module REPL
|
8
|
+
describe Pry do
|
9
|
+
let(:fresh_binding) {
|
10
|
+
local_a = 123
|
11
|
+
binding
|
12
|
+
}
|
13
|
+
|
14
|
+
let(:repl) { Pry.new fresh_binding }
|
15
|
+
|
16
|
+
it "does line continuation" do
|
17
|
+
output, prompt, filled = repl.send_input ""
|
18
|
+
output.should == "=> nil\n"
|
19
|
+
prompt.should == ">>"
|
20
|
+
filled.should == ""
|
21
|
+
|
22
|
+
output, prompt, filled = repl.send_input "def f(x)"
|
23
|
+
output.should == ""
|
24
|
+
prompt.should == ".."
|
25
|
+
filled.should == " "
|
26
|
+
|
27
|
+
output, prompt, filled = repl.send_input "end"
|
28
|
+
if RUBY_VERSION >= "2.1.0"
|
29
|
+
output.should == "=> :f\n"
|
30
|
+
else
|
31
|
+
output.should == "=> nil\n"
|
32
|
+
end
|
33
|
+
prompt.should == ">>"
|
34
|
+
filled.should == ""
|
35
|
+
end
|
36
|
+
|
37
|
+
it_behaves_like "a REPL provider"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
shared_examples_for "a REPL provider" do
|
2
|
+
it "evaluates ruby code in a given context" do
|
3
|
+
repl.send_input("local_a = 456")
|
4
|
+
fresh_binding.eval("local_a").should == 456
|
5
|
+
end
|
6
|
+
|
7
|
+
it "returns a tuple of output and the new prompt" do
|
8
|
+
output, prompt = repl.send_input("1 + 2")
|
9
|
+
output.should == "=> 3\n"
|
10
|
+
prompt.should == ">>"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "doesn't barf if the code throws an exception" do
|
14
|
+
output, prompt = repl.send_input("raise Exception")
|
15
|
+
output.should include "Exception: Exception"
|
16
|
+
prompt.should == ">>"
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module BetterErrors
|
4
|
+
describe StackFrame do
|
5
|
+
context "#application?" do
|
6
|
+
it "is true for application filenames" do
|
7
|
+
BetterErrors.stub(:application_root).and_return("/abc/xyz")
|
8
|
+
frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index")
|
9
|
+
|
10
|
+
frame.should be_application
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is false for everything else" do
|
14
|
+
BetterErrors.stub(:application_root).and_return("/abc/xyz")
|
15
|
+
frame = StackFrame.new("/abc/nope", 123, "foo")
|
16
|
+
|
17
|
+
frame.should_not be_application
|
18
|
+
end
|
19
|
+
|
20
|
+
it "doesn't care if no application_root is set" do
|
21
|
+
frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index")
|
22
|
+
|
23
|
+
frame.should_not be_application
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "#gem?" do
|
28
|
+
it "is true for gem filenames" do
|
29
|
+
Gem.stub(:path).and_return(["/abc/xyz"])
|
30
|
+
frame = StackFrame.new("/abc/xyz/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo")
|
31
|
+
|
32
|
+
frame.should be_gem
|
33
|
+
end
|
34
|
+
|
35
|
+
it "is false for everything else" do
|
36
|
+
Gem.stub(:path).and_return(["/abc/xyz"])
|
37
|
+
frame = StackFrame.new("/abc/nope", 123, "foo")
|
38
|
+
|
39
|
+
frame.should_not be_gem
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "#application_path" do
|
44
|
+
it "chops off the application root" do
|
45
|
+
BetterErrors.stub(:application_root).and_return("/abc/xyz")
|
46
|
+
frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index")
|
47
|
+
|
48
|
+
frame.application_path.should == "app/controllers/crap_controller.rb"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "#gem_path" do
|
53
|
+
it "chops of the gem path and stick (gem) there" do
|
54
|
+
Gem.stub(:path).and_return(["/abc/xyz"])
|
55
|
+
frame = StackFrame.new("/abc/xyz/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo")
|
56
|
+
|
57
|
+
frame.gem_path.should == "whatever (1.2.3) lib/whatever.rb"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "prioritizes gem path over application path" do
|
61
|
+
BetterErrors.stub(:application_root).and_return("/abc/xyz")
|
62
|
+
Gem.stub(:path).and_return(["/abc/xyz/vendor"])
|
63
|
+
frame = StackFrame.new("/abc/xyz/vendor/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo")
|
64
|
+
|
65
|
+
frame.gem_path.should == "whatever (1.2.3) lib/whatever.rb"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "#pretty_path" do
|
70
|
+
it "returns #application_path for application paths" do
|
71
|
+
BetterErrors.stub(:application_root).and_return("/abc/xyz")
|
72
|
+
frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index")
|
73
|
+
frame.pretty_path.should == frame.application_path
|
74
|
+
end
|
75
|
+
|
76
|
+
it "returns #gem_path for gem paths" do
|
77
|
+
Gem.stub(:path).and_return(["/abc/xyz"])
|
78
|
+
frame = StackFrame.new("/abc/xyz/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo")
|
79
|
+
|
80
|
+
frame.pretty_path.should == frame.gem_path
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "special cases SyntaxErrors" do
|
85
|
+
begin
|
86
|
+
eval(%{ raise SyntaxError, "you wrote bad ruby!" }, nil, "my_file.rb", 123)
|
87
|
+
rescue SyntaxError => syntax_error
|
88
|
+
end
|
89
|
+
frames = StackFrame.from_exception(syntax_error)
|
90
|
+
frames.first.filename.should == "my_file.rb"
|
91
|
+
frames.first.line.should == 123
|
92
|
+
end
|
93
|
+
|
94
|
+
it "doesn't blow up if no method name is given" do
|
95
|
+
error = StandardError.allocate
|
96
|
+
|
97
|
+
error.stub(:backtrace).and_return(["foo.rb:123"])
|
98
|
+
frames = StackFrame.from_exception(error)
|
99
|
+
frames.first.filename.should == "foo.rb"
|
100
|
+
frames.first.line.should == 123
|
101
|
+
|
102
|
+
error.stub(:backtrace).and_return(["foo.rb:123: this is an error message"])
|
103
|
+
frames = StackFrame.from_exception(error)
|
104
|
+
frames.first.filename.should == "foo.rb"
|
105
|
+
frames.first.line.should == 123
|
106
|
+
end
|
107
|
+
|
108
|
+
it "ignores a backtrace line if its format doesn't make any sense at all" do
|
109
|
+
error = StandardError.allocate
|
110
|
+
error.stub(:backtrace).and_return(["foo.rb:123:in `foo'", "C:in `find'", "bar.rb:123:in `bar'"])
|
111
|
+
frames = StackFrame.from_exception(error)
|
112
|
+
frames.count.should == 2
|
113
|
+
end
|
114
|
+
|
115
|
+
it "doesn't blow up if a filename contains a colon" do
|
116
|
+
error = StandardError.allocate
|
117
|
+
error.stub(:backtrace).and_return(["crap:filename.rb:123"])
|
118
|
+
frames = StackFrame.from_exception(error)
|
119
|
+
frames.first.filename.should == "crap:filename.rb"
|
120
|
+
end
|
121
|
+
|
122
|
+
it "doesn't blow up with a BasicObject as frame binding" do
|
123
|
+
obj = BasicObject.new
|
124
|
+
def obj.my_binding
|
125
|
+
::Kernel.binding
|
126
|
+
end
|
127
|
+
frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index", obj.my_binding)
|
128
|
+
frame.class_name.should == 'BasicObject'
|
129
|
+
end
|
130
|
+
|
131
|
+
it "sets method names properly" do
|
132
|
+
obj = "string"
|
133
|
+
def obj.my_method
|
134
|
+
begin
|
135
|
+
raise "foo"
|
136
|
+
rescue => err
|
137
|
+
err
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
frame = StackFrame.from_exception(obj.my_method).first
|
142
|
+
if BetterErrors.binding_of_caller_available?
|
143
|
+
frame.method_name.should == "#my_method"
|
144
|
+
frame.class_name.should == "String"
|
145
|
+
else
|
146
|
+
frame.method_name.should == "my_method"
|
147
|
+
frame.class_name.should == nil
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
if RUBY_ENGINE == "java"
|
152
|
+
it "doesn't blow up on a native Java exception" do
|
153
|
+
expect { StackFrame.from_exception(java.lang.Exception.new) }.to_not raise_error
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BetterErrors do
|
4
|
+
context ".editor" do
|
5
|
+
it "defaults to textmate" do
|
6
|
+
subject.editor["foo.rb", 123].should == "txmt://open?url=file://foo.rb&line=123"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "url escapes the filename" do
|
10
|
+
subject.editor["&.rb", 0].should == "txmt://open?url=file://%26.rb&line=0"
|
11
|
+
end
|
12
|
+
|
13
|
+
[:emacs, :emacsclient].each do |editor|
|
14
|
+
it "uses emacs:// scheme when set to #{editor.inspect}" do
|
15
|
+
subject.editor = editor
|
16
|
+
subject.editor[].should start_with "emacs://"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
[:macvim, :mvim].each do |editor|
|
21
|
+
it "uses mvim:// scheme when set to #{editor.inspect}" do
|
22
|
+
subject.editor = editor
|
23
|
+
subject.editor[].should start_with "mvim://"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
[:sublime, :subl, :st].each do |editor|
|
28
|
+
it "uses subl:// scheme when set to #{editor.inspect}" do
|
29
|
+
subject.editor = editor
|
30
|
+
subject.editor[].should start_with "subl://"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
[:textmate, :txmt, :tm].each do |editor|
|
35
|
+
it "uses txmt:// scheme when set to #{editor.inspect}" do
|
36
|
+
subject.editor = editor
|
37
|
+
subject.editor[].should start_with "txmt://"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
["emacsclient", "/usr/local/bin/emacsclient"].each do |editor|
|
42
|
+
it "uses emacs:// scheme when EDITOR=#{editor}" do
|
43
|
+
ENV["EDITOR"] = editor
|
44
|
+
subject.editor = subject.default_editor
|
45
|
+
subject.editor[].should start_with "emacs://"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
["mvim -f", "/usr/local/bin/mvim -f"].each do |editor|
|
50
|
+
it "uses mvim:// scheme when EDITOR=#{editor}" do
|
51
|
+
ENV["EDITOR"] = editor
|
52
|
+
subject.editor = subject.default_editor
|
53
|
+
subject.editor[].should start_with "mvim://"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
["subl -w", "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"].each do |editor|
|
58
|
+
it "uses subl:// scheme when EDITOR=#{editor}" do
|
59
|
+
ENV["EDITOR"] = editor
|
60
|
+
subject.editor = subject.default_editor
|
61
|
+
subject.editor[].should start_with "subl://"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
["mate -w", "/usr/bin/mate -w"].each do |editor|
|
66
|
+
it "uses txmt:// scheme when EDITOR=#{editor}" do
|
67
|
+
ENV["EDITOR"] = editor
|
68
|
+
subject.editor = subject.default_editor
|
69
|
+
subject.editor[].should start_with "txmt://"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: better_errors-creditkudos
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Charlie Somerville
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-01-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: erubis
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.6.6
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.6.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: coderay
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rack
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.9.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.0
|
55
|
+
description: Temporary fork of better_errors with some performance improvements.
|
56
|
+
email:
|
57
|
+
- charlie@charliesomerville.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".travis.yml"
|
64
|
+
- ".yardopts"
|
65
|
+
- CHANGELOG.md
|
66
|
+
- Gemfile
|
67
|
+
- LICENSE.txt
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- better_errors-creditkudos.gemspec
|
71
|
+
- lib/better_errors.rb
|
72
|
+
- lib/better_errors/code_formatter.rb
|
73
|
+
- lib/better_errors/code_formatter/html.rb
|
74
|
+
- lib/better_errors/code_formatter/text.rb
|
75
|
+
- lib/better_errors/error_page.rb
|
76
|
+
- lib/better_errors/exception_extension.rb
|
77
|
+
- lib/better_errors/middleware.rb
|
78
|
+
- lib/better_errors/rails.rb
|
79
|
+
- lib/better_errors/raised_exception.rb
|
80
|
+
- lib/better_errors/repl.rb
|
81
|
+
- lib/better_errors/repl/basic.rb
|
82
|
+
- lib/better_errors/repl/pry.rb
|
83
|
+
- lib/better_errors/stack_frame.rb
|
84
|
+
- lib/better_errors/templates/main.erb
|
85
|
+
- lib/better_errors/templates/text.erb
|
86
|
+
- lib/better_errors/templates/variable_info.erb
|
87
|
+
- lib/better_errors/version.rb
|
88
|
+
- spec/better_errors/code_formatter_spec.rb
|
89
|
+
- spec/better_errors/error_page_spec.rb
|
90
|
+
- spec/better_errors/middleware_spec.rb
|
91
|
+
- spec/better_errors/raised_exception_spec.rb
|
92
|
+
- spec/better_errors/repl/basic_spec.rb
|
93
|
+
- spec/better_errors/repl/pry_spec.rb
|
94
|
+
- spec/better_errors/repl/shared_examples.rb
|
95
|
+
- spec/better_errors/stack_frame_spec.rb
|
96
|
+
- spec/better_errors/support/my_source.rb
|
97
|
+
- spec/better_errors_spec.rb
|
98
|
+
- spec/spec_helper.rb
|
99
|
+
- spec/without_binding_of_caller.rb
|
100
|
+
homepage: https://github.com/creditkudos/better_errors
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
metadata: {}
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 2.0.0
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 2.5.2
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: Temporary fork of better_errors with some performance improvements.
|
124
|
+
test_files:
|
125
|
+
- spec/better_errors/code_formatter_spec.rb
|
126
|
+
- spec/better_errors/error_page_spec.rb
|
127
|
+
- spec/better_errors/middleware_spec.rb
|
128
|
+
- spec/better_errors/raised_exception_spec.rb
|
129
|
+
- spec/better_errors/repl/basic_spec.rb
|
130
|
+
- spec/better_errors/repl/pry_spec.rb
|
131
|
+
- spec/better_errors/repl/shared_examples.rb
|
132
|
+
- spec/better_errors/stack_frame_spec.rb
|
133
|
+
- spec/better_errors/support/my_source.rb
|
134
|
+
- spec/better_errors_spec.rb
|
135
|
+
- spec/spec_helper.rb
|
136
|
+
- spec/without_binding_of_caller.rb
|