pretty_trace 0.0.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/README.md +34 -0
- data/lib/pretty_trace/enable.rb +2 -0
- data/lib/pretty_trace/formatter.rb +44 -0
- data/lib/pretty_trace/handler.rb +34 -0
- data/lib/pretty_trace/module_methods.rb +17 -0
- data/lib/pretty_trace/version.rb +3 -0
- data/lib/pretty_trace.rb +4 -0
- metadata +120 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8d8187f1a160dfa57ad3431758d0ef5a5db5e579
|
4
|
+
data.tar.gz: e5523337c8797d52d4f8e2b698afcfd35ee33f91
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b6e4ae015526639834b3a5b9872241ae65b7d3614a890f3f715a52071e6001b30cc44ad1b1b57ab148b7534c188de4e9ee4f198d88013c0cc1c96e613a78c4fc
|
7
|
+
data.tar.gz: 0fd788761adcb08c129d9c606ed94d9c5e0582ce9056b31e3e6bfa9c459a119cb230bf5485f6868103e030f2479f1540ff34c5ee15b37839b884a3ce2e8bee43
|
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
Pretty Trace - Pretty Errors and Backtrace
|
2
|
+
==================================================
|
3
|
+
|
4
|
+
This forces any of your Ruby scripts to show a pretty backtrace.
|
5
|
+
|
6
|
+
Install
|
7
|
+
--------------------------------------------------
|
8
|
+
|
9
|
+
$ gem install pretty_trace
|
10
|
+
|
11
|
+
Example
|
12
|
+
--------------------------------------------------
|
13
|
+
|
14
|
+
1. Create this ruby file:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
# test.rb
|
18
|
+
require "pretty_trace/enable"
|
19
|
+
require "fileutils"
|
20
|
+
FileUtils.rm 'no_such_file'
|
21
|
+
```
|
22
|
+
|
23
|
+
2. Run it:
|
24
|
+
|
25
|
+
$ ruby test.rb
|
26
|
+
|
27
|
+
3. Get a pretty exception
|
28
|
+
|
29
|
+

|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module PrettyTrace
|
4
|
+
class Formatter
|
5
|
+
def self.pretty_trace(backtrace, opts={})
|
6
|
+
filter = opts[:filter] || []
|
7
|
+
filter = [filter] unless filter.is_a? Array
|
8
|
+
|
9
|
+
filter.each do |expression|
|
10
|
+
backtrace.reject! { |trace| trace =~ expression }
|
11
|
+
end
|
12
|
+
|
13
|
+
backtrace.map! do |item|
|
14
|
+
if item =~ /(.+):(\d+):in `(.+)'/
|
15
|
+
file, line, method = $1, $2, $3
|
16
|
+
dir = File.dirname(file).split('/').last
|
17
|
+
dir = dir == '.' ? '' : "#{dir}/"
|
18
|
+
|
19
|
+
file = File.basename file
|
20
|
+
item = "line %{green}#{line.to_s.ljust 4}%{reset} in %{cyan}#{dir}%{magenta}#{file}%{reset} > %{blue}#{method}%{reset}" % colors
|
21
|
+
end
|
22
|
+
item
|
23
|
+
end
|
24
|
+
|
25
|
+
backtrace
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def self.colors
|
31
|
+
{
|
32
|
+
reset: "\e[0m",
|
33
|
+
black: "\e[30m",
|
34
|
+
red: "\e[31m",
|
35
|
+
green: "\e[32m",
|
36
|
+
yellow: "\e[33m",
|
37
|
+
blue: "\e[34m",
|
38
|
+
magenta:"\e[35m",
|
39
|
+
cyan: "\e[36m",
|
40
|
+
white: "\e[37m",
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module PrettyTrace
|
4
|
+
class Handler
|
5
|
+
include Singleton
|
6
|
+
|
7
|
+
def trace_point
|
8
|
+
@trace_point ||= trace_point!
|
9
|
+
end
|
10
|
+
|
11
|
+
def options
|
12
|
+
@options ||= default_options
|
13
|
+
end
|
14
|
+
|
15
|
+
def options=(new_options)
|
16
|
+
@options = new_options
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def trace_point!
|
22
|
+
TracePoint.new :raise do |tp|
|
23
|
+
exception = tp.raised_exception
|
24
|
+
backtrace = exception.backtrace
|
25
|
+
pretty_trace = Formatter.pretty_trace backtrace, options
|
26
|
+
exception.set_backtrace pretty_trace
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_options
|
31
|
+
{ filter: [] }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module PrettyTrace
|
2
|
+
def self.enable
|
3
|
+
Handler.instance.trace_point.enable unless ENV['PRETTY_TRACE'] == 'off'
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.disable
|
7
|
+
Handler.instance.trace_point.disable
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.filter(filter)
|
11
|
+
if filter.is_a? Array
|
12
|
+
Handler.instance.options[:filter] += filter
|
13
|
+
else
|
14
|
+
Handler.instance.options[:filter] << filter
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/pretty_trace.rb
ADDED
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pretty_trace
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Danny Ben Shitrit
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: runfile
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: runfile-tasks
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.4'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.15'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.15'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '9.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '9.0'
|
83
|
+
description: Display clean and colorful error messages and backtrace
|
84
|
+
email: db@dannyben.com
|
85
|
+
executables: []
|
86
|
+
extensions: []
|
87
|
+
extra_rdoc_files: []
|
88
|
+
files:
|
89
|
+
- README.md
|
90
|
+
- lib/pretty_trace.rb
|
91
|
+
- lib/pretty_trace/enable.rb
|
92
|
+
- lib/pretty_trace/formatter.rb
|
93
|
+
- lib/pretty_trace/handler.rb
|
94
|
+
- lib/pretty_trace/module_methods.rb
|
95
|
+
- lib/pretty_trace/version.rb
|
96
|
+
homepage: https://github.com/DannyBen/pretty_trace
|
97
|
+
licenses:
|
98
|
+
- MIT
|
99
|
+
metadata: {}
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 2.0.0
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
requirements: []
|
115
|
+
rubyforge_project:
|
116
|
+
rubygems_version: 2.6.13
|
117
|
+
signing_key:
|
118
|
+
specification_version: 4
|
119
|
+
summary: Pretty backtrace and error messages
|
120
|
+
test_files: []
|