minato_error_handler 0.1.0 → 0.1.2.pre.1

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: fc543ada4f565f9bfa76c2eba17eea4c7cddf8c587fb4a3e686a6424e3a7b8fa
4
- data.tar.gz: 1ed085ad3783fa4c05774759c71d8f8e9996d8d1804aa0f5cce3a9ae60474e2e
3
+ metadata.gz: 2a3c1af39e732bbb24c8de7de0872caaa1a7f65537b5e0df5fae441c614dfdb5
4
+ data.tar.gz: a09eb1a8f5f8481b6310f8ccce2cb31a164718c6ecd3067712b9f8ce8cf6bc00
5
5
  SHA512:
6
- metadata.gz: 92b2590329c0f2d92eb343c76e79bf38cb8c9d599033e3ea2db80e83753d12a4c156222033519485d96bb3c275ef8730141ee25abb094c9d0871c4724cec9866
7
- data.tar.gz: 36e207a8be34f6d67fa0c3da6f6e50178041bb9f7ad432699951efe36b2e61aaa08512f07daf395128341a3bb093bc56c9287d456573329d4087d823257df2b0
6
+ metadata.gz: bb31ddba03fc2d593f2f5cc573a9ceba27c7f92823ee14fc5df36a2480d3afaf9171c1ba066be41d69a145ce6290f218ffc238aa37b32bb5799769c6ff9e2ab4
7
+ data.tar.gz: be8dff62d24801ff5a4e4f83a72d5cca05e11d6de0fe6fb4fca96961245d944f4397465af5890d62f8fa57e2ef920651d62b0b2e28361b09b3808e9966fdf2a9
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "minato_logger"
3
+ # require "minato_logger"
4
4
 
5
5
  module MinatoErrorHandler
6
6
  module ErrorHandler
7
7
  extend ActiveSupport::Concern
8
8
 
9
+ attr_accessor :default_error_class
10
+
9
11
  included do
10
12
  rescue_from StandardError, with: :handle
11
13
  end
@@ -13,14 +15,24 @@ module MinatoErrorHandler
13
15
  private
14
16
 
15
17
  def handle(exception)
16
- error = MinatoErrorHandler::MinatoError.from_error(exception)
18
+ error = parse_error(exception)
17
19
  report_error(error)
18
- render json: { errors: [error.to_json] }, status: error.status_code
20
+ render json: { errors: [error.as_json] }, status: error.status_code
21
+ end
22
+
23
+ def parse_error(error)
24
+ return error if error.is_a?(MinatoErrorHandler::MinatoError)
25
+
26
+ error_class = default_error_class || MinatoErrorHandler::MinatoError
27
+
28
+ minato_error = error_class.new
29
+ minato_error.caused_by = error.full_message
30
+ minato_error.set_backtrace(error.backtrace)
31
+ minato_error
19
32
  end
20
33
 
21
34
  def report_error(error)
22
- logger = MinatoLogger::Logger.new
23
- logger.error(error.to_json)
35
+ Rails.logger.error(error.as_json)
24
36
  end
25
37
  end
26
38
  end
@@ -5,44 +5,48 @@ require "json"
5
5
 
6
6
  module MinatoErrorHandler
7
7
  class MinatoError < StandardError
8
- def initialize(details: {}, caused_by: nil, status_code: 500)
9
- @caused_by = caused_by
10
- @details = details
11
- @status_code = status_code
12
- super
13
- end
8
+ SERVER_ERROR = 500
14
9
 
15
- def self.from_error(error)
16
- return error if error.instance_of?(MinatoErrorHandler::MinatoError)
10
+ attr_accessor :details, :caused_by, :request
17
11
 
18
- new caused_by: error.cause
12
+ def code
13
+ self.class.name
19
14
  end
20
15
 
21
- attr_reader :details, :status_code
22
-
23
16
  def message
24
- "An unknow error has occurred!"
17
+ "An unknow error has occurred! See more details in caused_by field."
25
18
  end
26
19
 
27
- def code
28
- self.class.name
20
+ def status_code
21
+ SERVER_ERROR
29
22
  end
30
23
 
31
24
  def unique_identfier
32
- @unique_identfier || SecureRandom.uuid
33
- end
34
-
35
- def caused_by
36
- @caused_by || cause
25
+ @unique_identfier ||= SecureRandom.uuid
37
26
  end
38
27
 
39
- def serialized_hash
40
- { message: message, code: code, unique_identfier: unique_identfier,
41
- details: details, caused_by: caused_by, status_code: status_code }
28
+ def serializable_attributes(methods)
29
+ methods
42
30
  end
43
31
 
44
32
  def to_json(*_args)
45
33
  serialized_hash.to_json
46
34
  end
35
+
36
+ def as_json
37
+ serialized_hash.as_json
38
+ end
39
+
40
+ protected
41
+
42
+ def serialized_hash
43
+ methods = serializable_attributes(%i[caused_by code details message status_code unique_identfier])
44
+
45
+ data = {}
46
+ methods.each do |method|
47
+ data[method] = send(method)
48
+ end
49
+ data
50
+ end
47
51
  end
48
52
  end
@@ -13,8 +13,9 @@ module MinatoErrorHandler
13
13
  "A network error has occurred!"
14
14
  end
15
15
 
16
- def serialized_hash
17
- super.merge({ request_body: request_body })
16
+ def serializable_attributes(attrs)
17
+ attrs << :request_body
18
+ attrs
18
19
  end
19
20
  end
20
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MinatoErrorHandler
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2-1"
5
5
  end
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ["lib"]
34
34
 
35
- spec.add_dependency "minato_logger", "~>0.1.6"
36
35
  spec.add_dependency "rails", ">= 7.0.4"
37
36
 
38
37
  # Uncomment to register a new dependency of your gem
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minato_error_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2.pre.1
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-28 00:00:00.000000000 Z
11
+ date: 2023-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: minato_logger
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.1.6
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.1.6
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rails
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -82,9 +68,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
68
  version: 2.6.0
83
69
  required_rubygems_version: !ruby/object:Gem::Requirement
84
70
  requirements:
85
- - - ">="
71
+ - - ">"
86
72
  - !ruby/object:Gem::Version
87
- version: '0'
73
+ version: 1.3.1
88
74
  requirements: []
89
75
  rubygems_version: 3.1.6
90
76
  signing_key: