backtrace 0.1.0 → 0.2.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: 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