rescue_registry 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4da895627d12dfeacc18cfc33b78f12ba7e2cfd0c1731aa7381e6514cea7e060
4
- data.tar.gz: '0782f17a88a32cc3c67273671b3863d2bb54dc4d18e05df1a3c490562cdd798e'
3
+ metadata.gz: a1680176387616a079a616679ca436f7e1a81ff266c1a6d8d574caa71e6ccab7
4
+ data.tar.gz: 329c59744d4fc5eddb2a1d91fc3049df660966a54b13625b667e4085b59daeb8
5
5
  SHA512:
6
- metadata.gz: 20c12e26d6cc417581612e50375a0a8e0de1197ef68d1c28cd96a25392384d72c597582ab72f2e5a62eec3f3fffb223d899552c1b84d1c20f7f526700916877c
7
- data.tar.gz: e74c56f15650b175ed028720c4bec65aae5ef39b71bfd668baef3a83d996bc927b60f9257d6bb14723ac2b4f11c489b0bf9cef047b494092d55e8e6bf24573a7
6
+ metadata.gz: f174ee373dc0352d366bb4e4ad6deedd95185600e904db85fe472622765e0726e6c07678de7f28c002cf5e39279725bc3400f5db105acb81254a20acb0945acb
7
+ data.tar.gz: a3f82a0a1b907baf038cb274a0fb8d7fbb4198e49dc9f5d6b49aee417b782c22dedd03cb17bf8d314f6507f6faf40cb7dc0928871d1a44d3af81f9692b9305e2
data/CHANGELOG.md CHANGED
@@ -7,6 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.3.0] - 2021-05-11
11
+ ### Changed
12
+ - For better JSONAPI spec compliance, errors payloads will not include the `details` key when value is `null`.
13
+ - Error payloads will not include the `meta` key when value is an empty object.
14
+
15
+ ## [0.2.5] - 2021-03-09
16
+ ### Added
17
+ - `code` can now be provided as an argument to `register_exception` - #29 (thanks @amaierhofer)
18
+
19
+ ## [0.2.4] - 2021-01-22
20
+ ### Fixed
21
+ - Support Ruby 3 (thanks @zvkemp and @ef4)
22
+
23
+ ## [0.2.3] - 2020-09-01
24
+ ### Fixed
25
+ - Properly handle exceptions for invalid format types - #25 (thanks @shanet)
26
+
27
+ ### Changed
28
+ - Lower minimum Ruby requirement to 2.3 (thanks @elDub)
29
+
30
+ ## [0.2.2] - 2019-06-13
31
+ ### Changed
32
+ - Lower minimum Ruby requirement to 2.3 (thanks @elDub)
33
+
10
34
  ## [0.2.1] - 2019-05-22
11
35
  ### Added
12
36
  - RescueRegistry::RailsTestingHelpers provides some helpers for easier testing in Rails applications.
data/README.md CHANGED
@@ -58,6 +58,7 @@ class MyController < ActionController::Base
58
58
  register_exception MetaProcError, meta: -> (e) { { class_name: e.class.name.upcase } }
59
59
  register_exception CustomHandlerError, handler: CustomErrorHandler
60
60
  register_exception RailsError, status: 403, handler: RescueRegistry::RailsExceptionHandler
61
+ register_exception CustomStatusError, status: 422, code: :name_invalid
61
62
  end
62
63
  ```
63
64
 
@@ -46,6 +46,18 @@ module RescueRegistry
46
46
  context.rescue_registry.public_send(method, *args)
47
47
  end
48
48
  end
49
+
50
+ # the Module#ruby2_keywords is added starting at ruby 2.7. It lets us mark
51
+ # these methods as using ruby2-style keyword argument semantics. This will
52
+ # keep them working correctly on ruby3, and clears a deprecation that
53
+ # otherwise fires in 2.7+.
54
+ if respond_to?(:ruby2_keywords, true)
55
+ class << self
56
+ REGISTRY_METHODS.each do |method|
57
+ ruby2_keywords(method)
58
+ end
59
+ end
60
+ end
49
61
  end
50
62
 
51
63
  ActiveSupport.on_load(:before_initialize) do
@@ -21,6 +21,7 @@ module RescueRegistry
21
21
  end
22
22
 
23
23
  @meta = options[:meta]
24
+ @code = options[:code]
24
25
 
25
26
  # TODO: Warn about unrecognized options
26
27
  end
@@ -29,7 +30,7 @@ module RescueRegistry
29
30
  alias_method :status_code, :status
30
31
 
31
32
  def error_code
32
- error_code_from_status
33
+ @code.presence || error_code_from_status
33
34
  end
34
35
 
35
36
  def title
@@ -74,14 +75,20 @@ module RescueRegistry
74
75
  )
75
76
  end
76
77
 
78
+ error_payload = {
79
+ code: error_code,
80
+ status: status_code.to_s,
81
+ title: title
82
+ }
83
+
84
+ if (d = detail)
85
+ error_payload[:detail] = d
86
+ end
87
+
88
+ error_payload[:meta] = payload_meta if payload_meta.any?
89
+
77
90
  {
78
- errors: [
79
- code: error_code,
80
- status: status_code.to_s,
81
- title: title,
82
- detail: detail,
83
- meta: payload_meta
84
- ]
91
+ errors: [error_payload]
85
92
  }
86
93
  end
87
94
 
@@ -9,12 +9,7 @@ module RescueRegistry
9
9
  exception = request.get_header "action_dispatch.exception"
10
10
 
11
11
  if RescueRegistry.handles_exception?(exception)
12
- begin
13
- content_type = request.formats.first
14
- rescue Mime::Type::InvalidMimeType
15
- content_type = Mime[:text]
16
- end
17
-
12
+ content_type = request.formats.first || Mime[:text]
18
13
  response = RescueRegistry.response_for_public(content_type, exception)
19
14
  end
20
15
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RescueRegistry
4
- VERSION = "0.2.1"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rescue_registry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Wagenet
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-22 00:00:00.000000000 Z
11
+ date: 2021-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.9'
83
- description:
83
+ description:
84
84
  email:
85
85
  - peter.wagenet@gmail.com
86
86
  executables: []
@@ -114,23 +114,26 @@ metadata:
114
114
  bug_tracker_uri: https://github.com/wagenet/rescue_registry/issues
115
115
  changelog_uri: https://github.com/wagenet/rescue_registry/CHANGELOG.md
116
116
  source_code_uri: https://github.com/wagenet/rescue_registry
117
- post_install_message:
117
+ post_install_message:
118
118
  rdoc_options: []
119
119
  require_paths:
120
120
  - lib
121
121
  required_ruby_version: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - "~>"
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '2.3'
126
+ - - "<"
124
127
  - !ruby/object:Gem::Version
125
- version: '2.4'
128
+ version: '3.1'
126
129
  required_rubygems_version: !ruby/object:Gem::Requirement
127
130
  requirements:
128
131
  - - ">="
129
132
  - !ruby/object:Gem::Version
130
133
  version: '0'
131
134
  requirements: []
132
- rubygems_version: 3.0.3
133
- signing_key:
135
+ rubygems_version: 3.2.15
136
+ signing_key:
134
137
  specification_version: 4
135
138
  summary: Registry for Rails Exceptions
136
139
  test_files: []