backtrace 0.1.0 → 0.2.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: a4d5868fe35fb94ae0edb009cbdeb81a86db9ffa2fb6af0d220c816ee03b0c4a
4
- data.tar.gz: b9671e814fa3f124d7c6e8517b8e599642df837e4edf1846bc6b2239a6a13739
3
+ metadata.gz: daa0f9e997d78d21669af29fca3a767ad131e99e8877271c9a3b9e8c5e697b57
4
+ data.tar.gz: 83dfff5676b40f0134e3ecf4528f460217577b55a798e659236c745ecd513ec6
5
5
  SHA512:
6
- metadata.gz: 5698842f19e6e1c948acd03151b644c35fc15018f619eaf6cfa6b257411ad51b1fa14944794ea9f6a8003ad9d90bfa172d4ffc6e1dd69d17c40d5797f0a3f8c6
7
- data.tar.gz: cf0a106b126c59b7f51266e60fa7f506754632a8ac973c32f414b12ba5fc69f873bb50152f3ef598c5a756b0837b32d516e14add938d3c55c8949c4b88611eae
6
+ metadata.gz: 6c348eadf42589dd5aa41adf07d49b33f68a1430a7e790599e6c58c336fe203f0fcdcaa16d151e758d0e8c756de1984a802009961c3f220c8fcdd5e1c09bc046
7
+ data.tar.gz: e330c2c1c5464044fd9f4e86953987f5b375551bc459f63f537b24b12395f9e3f065081a918d3cde70a4d64f15a536db1bc2c71a0cb6cc079c87ff919792a3ea
data/README.md CHANGED
@@ -24,6 +24,27 @@ rescue StandardError => e
24
24
  end
25
25
  ```
26
26
 
27
+ A more compact version would use a block:
28
+
29
+ ```ruby
30
+ require 'backtrace'
31
+ Backtrace.exec(swallow: true) do
32
+ # do something dangerous
33
+ end
34
+ ```
35
+
36
+ You can also provide a logging facility, to log the backtrace:
37
+
38
+ ```ruby
39
+ require 'backtrace'
40
+ log = Log.new # it must implement method error(msg)
41
+ Backtrace.exec(swallow: true, log: log) do
42
+ # do something dangerous
43
+ end
44
+ ```
45
+
46
+ That's it.
47
+
27
48
  # License
28
49
 
29
50
  (The MIT 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.1.0'
34
+ s.version = '0.2.0'
35
35
  s.license = 'MIT'
36
36
  s.summary = 'Backtrace printer'
37
37
  s.description = 'Nicely prints Ruby backtrace'
@@ -42,4 +42,16 @@ class Backtrace
42
42
  .reverse.join("\n\t")
43
43
  ].join
44
44
  end
45
+
46
+ def self.exec(swallow: false, log: nil)
47
+ yield
48
+ rescue StandardError => e
49
+ trace = Backtrace.new(e).to_s
50
+ if log.nil?
51
+ puts trace
52
+ else
53
+ log.error(trace)
54
+ end
55
+ raise e unless swallow
56
+ end
45
57
  end
@@ -37,4 +37,19 @@ class BacktraceTest < Minitest::Test
37
37
  assert(text.include?("RuntimeError: Just a test\n"), text)
38
38
  assert(text.include?('test/test_backtrace.rb'), text)
39
39
  end
40
+
41
+ def test_runs_a_block
42
+ log = FakeLog.new
43
+ Backtrace.exec(swallow: true, log: log) do
44
+ raise 'It is intended'
45
+ end
46
+ assert(log.sent.include?('intended'))
47
+ end
48
+
49
+ class FakeLog
50
+ attr_reader :sent
51
+ def error(msg)
52
+ @sent = msg
53
+ end
54
+ end
40
55
  end
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.1.0
4
+ version: 0.2.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-12 00:00:00.000000000 Z
11
+ date: 2018-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest