eac_ruby_base0 0.21.0 → 0.22.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: 9d3e0be8e78fefa2f3ed9a260b8d931d6534c4585888564402d6762aec102266
4
- data.tar.gz: a10cc4d1f6c55cb4c57851ddd07916289f6f1c4e1384a5089bff26502a490afc
3
+ metadata.gz: 3e398ebd87f48ffe980bdf9de19e63edd1e00320f9f9a34bed3fb76f68ad9fc0
4
+ data.tar.gz: 9e0c6366f6d79237ed2f6d8cc26d94b9f652a4e06f136e5f6aec3af96602afa9
5
5
  SHA512:
6
- metadata.gz: 1182d9a7d19d4a55f819608464ee73429b5d540aa59dfdcf8e94998a73f7b5b569b912835fe1707c00221f080dbd255373012cd08ec3ddf3b06f42589f50d2c6
7
- data.tar.gz: 3a15971e1c69c90cedcd8ebd890a1da7c42df957c17fc17dbe1195e3e775ec19ce0d80b3fcd446f74c0187fee0ebda7f32a0a5f7e1cf6af8d69f1caa31bb3ff1
6
+ metadata.gz: 9dcefb2a114a8a8aaacd560ddedf45493d1a7aa296d388b0d0600a5207de6fe088ba9c8f665d2aa2a6c47622a8ea08186ecc4d28a78a0686149121319e329fd5
7
+ data.tar.gz: a36c600a95a69d357f628bd9d38d04af5257d1091790edd4a98cddd420aadb9f41be01b551a1d08f679bb91e1467c6ca560e53a1e3ea2c553b2877b5151c5b27
@@ -2,9 +2,15 @@
2
2
 
3
3
  module EacRubyBase0
4
4
  class ErrorPresenter
5
+ enable_memoized
5
6
  enable_speaker
6
7
  common_constructor :the_error
7
8
 
9
+ # @return [EacRubyBase0::ErrorPresenter, nil]
10
+ memoize def cause
11
+ the_error.cause.if_present { |v| self.class.new(v) }
12
+ end
13
+
8
14
  # @return [String]
9
15
  def full_backtrace_message
10
16
  the_error.backtrace.map { |v| "#{v}\n" }.join
@@ -12,8 +18,8 @@ module EacRubyBase0
12
18
 
13
19
  # @return [String]
14
20
  def full_message
15
- self_full_message + the_error.cause.if_present('') do |e|
16
- "#{'-' * 16}\n#{self.class.new(e).full_message}"
21
+ self_full_message + cause.if_present('') do |e|
22
+ "#{'-' * 16}\n#{e.full_message}"
17
23
  end
18
24
  end
19
25
 
@@ -41,8 +47,10 @@ module EacRubyBase0
41
47
  end
42
48
 
43
49
  # @return [void]
44
- def show_message
45
- error message
50
+ def show_message(caused_by = false) # rubocop:disable Style/OptionalBooleanParameter
51
+ prefix = caused_by ? 'Caused by: ' : ''
52
+ error [prefix, message].join
53
+ cause.if_present { |v| v.show_message(true) }
46
54
  end
47
55
 
48
56
  # @return [void]
@@ -4,6 +4,12 @@ module EacRubyBase0
4
4
  module Runner
5
5
  module Prepend
6
6
  ERROR_EXIT_CODE = 113
7
+ DISABLE_RESCUE_ENVVAR = 'DISABLE_RESCUE'
8
+
9
+ # @return [Boolean]
10
+ def disable_rescue?
11
+ ::ENV.fetch(DISABLE_RESCUE_ENVVAR, false).to_bool
12
+ end
7
13
 
8
14
  def run
9
15
  on_rescue_errors do
@@ -25,6 +31,8 @@ module EacRubyBase0
25
31
  def on_rescue_errors
26
32
  yield
27
33
  rescue Exception => e # rubocop:disable Lint/RescueException
34
+ raise e if disable_rescue?
35
+
28
36
  ::EacRubyBase0::ErrorPresenter.new(e).show
29
37
  exit ERROR_EXIT_CODE
30
38
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyBase0
4
- VERSION = '0.21.0'
4
+ VERSION = '0.22.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_base0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors