backtrace 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: