PrettyBacktrace
Pretty your exception backtrace.
Installation
Add this line to your application's Gemfile:
gem 'pretty_backtrace'
And then execute:
$ bundle
Or install it yourself as:
$ gem install pretty_backtrace
Usage
Use like that:
require 'pretty_backtrace'
PrettyBacktrace.enable
def recursive n
str = "Hi #{n}!! " * 128
if n > 0
recursive n - 1
else
raise "bottom of recursive"
end
end
recursive 3
and you can see prettier backtrace (you can see local variable names and values).
test.rb:10:in `recursive' (n = 0, str = "Hi 0!! Hi 0!! Hi 0...): bottom of recursive (RuntimeError)
from test.rb:9:in `recursive' (n = 1, str = "Hi 1!! Hi 1!! Hi 1...)
from test.rb:9:in `recursive' (n = 2, str = "Hi 2!! Hi 2!! Hi 2...)
from test.rb:9:in `recursive' (n = 3, str = "Hi 3!! Hi 3!! Hi 3...)
from test.rb:15:in `<main>'
You only need to require "pretty_backtrace/enable" to eliminate "PrettyBacktrace.enable call".
PrettyBacktrace::CONFIG can change behaviour. See source code files for details.
Multi-line mode
You can use multi-line mode with the following configuration.
PrettyBacktrace.multi_line = true
Multi-line mode enable to show file contents and all variables (and pointing values) in each lines like that:
test.rb:11:in `recursive'
[FILE]
9| recursive n - 1
10| else
-> 11| raise "bottom of recursive"
12| end
13|end
[LOCAL VARIABLES]
n = 0
str = "Hi 0!! Hi 0!! Hi 0!! Hi 0!! Hi 0!! Hi 0!! Hi 0!! Hi 0...
: bottom of recursive (RuntimeError)
from test.rb:9:in `recursive'
[FILE]
7| str = "Hi #{n}!! " * 128
8| if n > 0
-> 9| recursive n - 1
10| else
11| raise "bottom of recursive"
[LOCAL VARIABLES]
n = 1
str = "Hi 1!! Hi 1!! Hi 1!! Hi 1!! Hi 1!! Hi 1!! Hi 1!! Hi 1...
from test.rb:9:in `recursive'
[FILE]
7| str = "Hi #{n}!! " * 128
8| if n > 0
-> 9| recursive n - 1
10| else
11| raise "bottom of recursive"
[LOCAL VARIABLES]
n = 2
str = "Hi 2!! Hi 2!! Hi 2!! Hi 2!! Hi 2!! Hi 2!! Hi 2!! Hi 2...
from test.rb:9:in `recursive'
[FILE]
7| str = "Hi #{n}!! " * 128
8| if n > 0
-> 9| recursive n - 1
10| else
11| raise "bottom of recursive"
[LOCAL VARIABLES]
n = 3
str = "Hi 3!! Hi 3!! Hi 3!! Hi 3!! Hi 3!! Hi 3!! Hi 3!! Hi 3...
from test.rb:15:in `<main>'
Contributing
There are no spec tests. I love to get your contributions!
- Fork it ( https://github.com/ko1/pretty_backtrace/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request