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 +4 -4
- data/lib/eac_ruby_base0/error_presenter.rb +12 -4
- data/lib/eac_ruby_base0/runner/prepend.rb +8 -0
- data/lib/eac_ruby_base0/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3e398ebd87f48ffe980bdf9de19e63edd1e00320f9f9a34bed3fb76f68ad9fc0
|
|
4
|
+
data.tar.gz: 9e0c6366f6d79237ed2f6d8cc26d94b9f652a4e06f136e5f6aec3af96602afa9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 +
|
|
16
|
-
"#{'-' * 16}\n#{
|
|
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
|
-
|
|
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
|