backtrace 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/backtrace.gemspec +1 -1
- data/lib/backtrace.rb +7 -6
- data/screenshot.png +0 -0
- data/test/test_backtrace.rb +12 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4eed452fb8bad8a8202f534cfccdda6ccda8062c237b85f7e32e67a8ae07432
|
4
|
+
data.tar.gz: 11bc2f7a9bd4bcb60a1dce74ae7c535d0aed798907113d06ce155ad4cd5b2d4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d19a79b5fbbe51f0ca56a57cfe2833ec0ef48a94917b355249c2b39f5d0d204ebf3eb34f07b366148b2c35e4446de844b8ad3947778718908e60c87d7c98ba25
|
7
|
+
data.tar.gz: edf7cee2177c38ed25d1e32b51d06b7e789b4533b6dd17089a0958a3d288c20a54046a0201df25ba7cd099c7f2839a00d5e3e75486e094e56f13aa9ae4b54a16
|
data/README.md
CHANGED
@@ -24,6 +24,8 @@ rescue StandardError => e
|
|
24
24
|
end
|
25
25
|
```
|
26
26
|
|
27
|
+

|
28
|
+
|
27
29
|
A more compact version would use a block:
|
28
30
|
|
29
31
|
```ruby
|
@@ -43,6 +45,20 @@ Backtrace.exec(swallow: true, log: log) do
|
|
43
45
|
end
|
44
46
|
```
|
45
47
|
|
48
|
+
Sometimes you may need to hide unimportant lines of the backtrace,
|
49
|
+
which are not related to your code base. You can use `mine` argument
|
50
|
+
of the constructor, which is a regular expression or a string. When it's met
|
51
|
+
in the backtrace, the printing will stop:
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
require 'backtrace'
|
55
|
+
begin
|
56
|
+
# do something dangerous
|
57
|
+
rescue StandardError => e
|
58
|
+
puts Backtrace.new(e, mine: 'yegor')
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
46
62
|
That's it.
|
47
63
|
|
48
64
|
# License
|
data/backtrace.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.rubygems_version = '2.3.3'
|
32
32
|
s.required_ruby_version = '>=2.3'
|
33
33
|
s.name = 'backtrace'
|
34
|
-
s.version = '0.
|
34
|
+
s.version = '0.3.0'
|
35
35
|
s.license = 'MIT'
|
36
36
|
s.summary = 'Backtrace printer'
|
37
37
|
s.description = 'Nicely prints Ruby backtrace'
|
data/lib/backtrace.rb
CHANGED
@@ -27,9 +27,9 @@
|
|
27
27
|
# Copyright:: Copyright (c) 2018 Yegor Bugayenko
|
28
28
|
# License:: MIT
|
29
29
|
class Backtrace
|
30
|
-
def initialize(exp,
|
30
|
+
def initialize(exp, mine: '')
|
31
31
|
@exp = exp
|
32
|
-
@
|
32
|
+
@mine = (mine.is_a?(Regexp) ? mine : Regexp.new(Regexp.quote(mine)))
|
33
33
|
end
|
34
34
|
|
35
35
|
def to_s
|
@@ -38,16 +38,17 @@ class Backtrace
|
|
38
38
|
': ',
|
39
39
|
@exp.message,
|
40
40
|
"\n\t",
|
41
|
-
@exp.backtrace.reverse
|
41
|
+
@exp.backtrace.reverse
|
42
|
+
.drop_while { |t| @mine.match(t).nil? }
|
42
43
|
.reverse.join("\n\t")
|
43
44
|
].join
|
44
45
|
end
|
45
46
|
|
46
|
-
def self.exec(swallow: false, log: nil)
|
47
|
+
def self.exec(swallow: false, log: nil, mine: '')
|
47
48
|
yield
|
48
49
|
rescue StandardError => e
|
49
|
-
trace = Backtrace.new(e).to_s
|
50
|
-
if log.nil?
|
50
|
+
trace = Backtrace.new(e, mine: mine).to_s
|
51
|
+
if log.nil? || !log.respond_to?(:error)
|
51
52
|
puts trace
|
52
53
|
else
|
53
54
|
log.error(trace)
|
data/screenshot.png
ADDED
Binary file
|
data/test/test_backtrace.rb
CHANGED
@@ -46,6 +46,18 @@ class BacktraceTest < Minitest::Test
|
|
46
46
|
assert(log.sent.include?('intended'))
|
47
47
|
end
|
48
48
|
|
49
|
+
def test_runs_a_block_to_console
|
50
|
+
Backtrace.exec(swallow: true, mine: 'backtrace') do
|
51
|
+
raise 'It is intended'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_runs_a_block_to_broken_log
|
56
|
+
Backtrace.exec(swallow: true, log: Object.new) do
|
57
|
+
raise 'It is intended'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
49
61
|
class FakeLog
|
50
62
|
attr_reader :sent
|
51
63
|
def error(msg)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- Rakefile
|
99
99
|
- backtrace.gemspec
|
100
100
|
- lib/backtrace.rb
|
101
|
+
- screenshot.png
|
101
102
|
- test/test_backtrace.rb
|
102
103
|
homepage: http://github.com/yegor256/backtrace
|
103
104
|
licenses:
|