minato_error_handler 0.1.2.pre.4 → 0.1.2.pre.5

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: 933cd1db1433ec311e9444e98083fdd941533d15caf2c9a47a50eea92db8458b
4
- data.tar.gz: 0135162f0cfd82a5774e53eefb28516068316ea41fca125078496087def6f94c
3
+ metadata.gz: 6b7d51b076d30f1d1f1f7001ad4cdcf2655d063fcea829bb3328c3970f48672c
4
+ data.tar.gz: '008d796e6d82a663606fde3ae0d84932754e73397bf84fa01abb79c1056e95de'
5
5
  SHA512:
6
- metadata.gz: 38ab27987d1a5238ef906ea0d206eb4ef9709128185a22d0ca1f33a3084f7fa006171dc13b8a3b93966bf7ed7ded9ba906e6a29849c43aa12af7b41c1cc80576
7
- data.tar.gz: 26ae1501716ab8e63be2c027e4c5c8ee58382a1f89acd30b04c978d448ec04e7bb31dc1d8a51f9bd4c85ce9f18e87213292d34398a1185ef8c1b0eb1aa729884
6
+ metadata.gz: 621d41e858a6acdda862990330b7c37c4aeebdc334d571c03e3ea5560920448fc44e5757393c01e22aed3aec9053bff2f30058a819979a58e280f3d859bee463
7
+ data.tar.gz: c171472bc6847c753d90ed90ba3007e7568524ca57b7cf057d7d937655521508f4d7cb9d85d25a2b859c63be3832276e8b7aeb2d383a481cab3c6027805d86a9
@@ -14,18 +14,18 @@ module MinatoErrorHandler
14
14
 
15
15
  def handle(exception)
16
16
  error = parse_error(exception)
17
- report_error(error)
18
- render json: { errors: [error.as_json] }, status: error.status_code
17
+ report_error error
18
+ render_error error
19
19
  end
20
20
 
21
21
  def parse_error(error)
22
- return error if error.is_a?(MinatoErrorHandler::MinatoError)
22
+ return error if error.is_a?(MinatoErrorHandler::Errors::MinatoError)
23
23
 
24
- error_class = self.class.default_error_class || MinatoErrorHandler::UnknowError
24
+ error_class = self.class.default_error_class || MinatoErrorHandler::Errors::UnknowError
25
25
 
26
26
  minato_error = error_class.new
27
27
  minato_error.caused_by = error.full_message
28
- minato_error.set_backtrace(error.backtrace)
28
+ minato_error.backtrace = error.backtrace
29
29
  minato_error
30
30
  end
31
31
 
@@ -33,6 +33,10 @@ module MinatoErrorHandler
33
33
  Rails.logger.error(error.as_json)
34
34
  end
35
35
 
36
+ def render_error(error)
37
+ render json: { errors: [error.json_response] }, status: error.status_code
38
+ end
39
+
36
40
  module ClassMethods
37
41
  def default_error(klass)
38
42
  # rubocop:disable Style/ClassVars
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "securerandom"
4
+ require "json"
5
+
6
+ module MinatoErrorHandler
7
+ module Errors
8
+ class MinatoError < StandardError
9
+ attr_accessor :details, :caused_by, :request
10
+
11
+ def message
12
+ raise_method_not_implemented_error __method__
13
+ end
14
+
15
+ def status_code
16
+ raise_method_not_implemented_error __method__
17
+ end
18
+
19
+ def code
20
+ self.class.name
21
+ end
22
+
23
+ def backtrace=(backtrace)
24
+ set_backtrace(backtrace)
25
+ end
26
+
27
+ def unique_identfier
28
+ @unique_identfier ||= SecureRandom.uuid
29
+ end
30
+
31
+ def to_json(*_args)
32
+ serialized_hash(serializable_methods_to_log).to_json
33
+ end
34
+
35
+ def as_json
36
+ serialized_hash(serializable_methods_to_log).as_json
37
+ end
38
+
39
+ def json_response
40
+ serialized_hash(serializable_methods_to_response).as_json
41
+ end
42
+
43
+ private
44
+
45
+ def serializable_methods_to_log
46
+ %i[caused_by code details message request status_code unique_identfier]
47
+ end
48
+
49
+ def serializable_methods_to_response
50
+ methods_to_exclude = %i[request]
51
+ serializable_methods_to_log.reject { |m| methods_to_exclude.include? m }
52
+ end
53
+
54
+ def serialized_hash(methods)
55
+ data = {}
56
+ methods.each do |method|
57
+ data[method] = send(method)
58
+ end
59
+ data
60
+ end
61
+
62
+ def raise_method_not_implemented_error(method_name)
63
+ raise "You must define \"#{method_name}\" in your concrete class."
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MinatoErrorHandler
4
+ module Errors
5
+ class NetworkError < MinatoErrorHandler::Errors::MinatoError
6
+ attr_accessor :response
7
+
8
+ def message
9
+ "A network error has occurred!"
10
+ end
11
+
12
+ def status_code
13
+ 503
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MinatoErrorHandler
4
+ module Errors
5
+ class UnknowError < MinatoError
6
+ def message
7
+ "An unknow error has occurred! See more details in caused_by field."
8
+ end
9
+
10
+ def status_code
11
+ 500
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MinatoErrorHandler
4
- VERSION = "0.1.2-4"
4
+ VERSION = "0.1.2-5"
5
5
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "minato_error_handler/railtie"
4
4
  require "minato_error_handler/version"
5
- require "minato_error_handler/minato_error"
6
- require "minato_error_handler/network_error"
7
- require "minato_error_handler/unknow_error"
5
+ require "minato_error_handler/errors/minato_error"
6
+ require "minato_error_handler/errors/network_error"
7
+ require "minato_error_handler/errors/unknow_error"
8
8
  require "minato_error_handler/error_handler"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minato_error_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.pre.4
4
+ version: 0.1.2.pre.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferreri
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-30 00:00:00.000000000 Z
11
+ date: 2023-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -43,10 +43,10 @@ files:
43
43
  - compose.yml
44
44
  - lib/minato_error_handler.rb
45
45
  - lib/minato_error_handler/error_handler.rb
46
- - lib/minato_error_handler/minato_error.rb
47
- - lib/minato_error_handler/network_error.rb
46
+ - lib/minato_error_handler/errors/minato_error.rb
47
+ - lib/minato_error_handler/errors/network_error.rb
48
+ - lib/minato_error_handler/errors/unknow_error.rb
48
49
  - lib/minato_error_handler/railtie.rb
49
- - lib/minato_error_handler/unknow_error.rb
50
50
  - lib/minato_error_handler/version.rb
51
51
  - minato_error_handler.gemspec
52
52
  - sig/minato_error_handler.rbs
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "securerandom"
4
- require "json"
5
-
6
- module MinatoErrorHandler
7
- class MinatoError < StandardError
8
- attr_accessor :details, :caused_by, :request
9
-
10
- def message
11
- raise_method_not_implemented_error __method__
12
- end
13
-
14
- def status_code
15
- raise_method_not_implemented_error __method__
16
- end
17
-
18
- def serializable_methods
19
- raise_method_not_implemented_error __method__
20
- end
21
-
22
- def code
23
- self.class.name
24
- end
25
-
26
- def unique_identfier
27
- @unique_identfier ||= SecureRandom.uuid
28
- end
29
-
30
- def to_json(*_args)
31
- serialized_hash.to_json
32
- end
33
-
34
- def as_json
35
- serialized_hash.as_json
36
- end
37
-
38
- protected
39
-
40
- def default_serializable_methods
41
- %i[caused_by code details message request status_code unique_identfier]
42
- end
43
-
44
- def serialized_hash
45
- data = {}
46
- serializable_methods.each do |method|
47
- data[method] = send(method)
48
- end
49
- data
50
- end
51
-
52
- def raise_method_not_implemented_error(method_name)
53
- raise "You must define \"#{method_name}\" in your concrete class."
54
- end
55
- end
56
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module MinatoErrorHandler
4
- class NetworkError < MinatoErrorHandler::MinatoError
5
- attr_accessor :response
6
-
7
- def message
8
- "A network error has occurred!"
9
- end
10
-
11
- def status_code
12
- 503
13
- end
14
-
15
- def serializable_methods
16
- default_serializable_methods.push(:response)
17
- end
18
- end
19
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module MinatoErrorHandler
4
- class UnknowError < MinatoError
5
- def message
6
- "An unknow error has occurred! See more details in caused_by field."
7
- end
8
-
9
- def status_code
10
- 500
11
- end
12
-
13
- def serializable_methods
14
- default_serializable_methods
15
- end
16
- end
17
- end