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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: daa0f9e997d78d21669af29fca3a767ad131e99e8877271c9a3b9e8c5e697b57
4
- data.tar.gz: 83dfff5676b40f0134e3ecf4528f460217577b55a798e659236c745ecd513ec6
3
+ metadata.gz: d4eed452fb8bad8a8202f534cfccdda6ccda8062c237b85f7e32e67a8ae07432
4
+ data.tar.gz: 11bc2f7a9bd4bcb60a1dce74ae7c535d0aed798907113d06ce155ad4cd5b2d4c
5
5
  SHA512:
6
- metadata.gz: 6c348eadf42589dd5aa41adf07d49b33f68a1430a7e790599e6c58c336fe203f0fcdcaa16d151e758d0e8c756de1984a802009961c3f220c8fcdd5e1c09bc046
7
- data.tar.gz: e330c2c1c5464044fd9f4e86953987f5b375551bc459f63f537b24b12395f9e3f065081a918d3cde70a4d64f15a536db1bc2c71a0cb6cc079c87ff919792a3ea
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
+ ![screenshot](https://raw.githubusercontent.com/yegor256/backtrace/master/screenshot.png)
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
@@ -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.2.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'
@@ -27,9 +27,9 @@
27
27
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
28
28
  # License:: MIT
29
29
  class Backtrace
30
- def initialize(exp, stop: '')
30
+ def initialize(exp, mine: '')
31
31
  @exp = exp
32
- @stop = stop
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.drop_while { |t| !t.include?(@stop) }
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)
Binary file
@@ -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.2.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-14 00:00:00.000000000 Z
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: