rescue_registry 0.2.0 → 0.2.5

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: abb4709b529437899b1f600805b3218d82581ba88c03642561d015385776dee3
4
- data.tar.gz: 1f3efb50ac2375c0b204bb8af849615922f48d74c2eb06179a72bef6ce101754
3
+ metadata.gz: 237133f9678393d12439ef50317b1671632606d3d35a7b5f658cf4eab3083bbc
4
+ data.tar.gz: ffac90b369e7b345fd74de72db7178f420b9577ca30e26d1b8427cf2e58049e4
5
5
  SHA512:
6
- metadata.gz: b3025ac89186c93d3d16eea9f1aa4039955d4527eefbeccc939f7501753ad3f9ea306ebc3e705009ee06e9bfd928db5521643d159646e54c271642a2c9e358f0
7
- data.tar.gz: f3df89c3ea0204a2388b6ccd40deb6d4061586207dc8dca97b2475b07027e28a1db19574741487fb439e7c755bf5d79c9c3f687d4ac20663b5bf2d32b5995b41
6
+ metadata.gz: 43d1e9755b0333d69646594e28e6caef2219e02b9a18d466fd8bee0b204d4fefdc817628d958899abe8e6391327a5a9f131889ea0ee44ac611e778d5a1f3d70c
7
+ data.tar.gz: 54dcad7d3ad63eec2dd5c752cafff76ff248832093603f45e1c0c959e10b8e62dcc9102e1823a163b5c6452022ab6fc3f2ed8ac5267cbcc52290916092329b6f
data/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.2.5] - 2021-03-09
11
+ ### Added
12
+ - `code` can now be provided as an argument to `register_exception` - #29 (thanks @amaierhofer)
13
+
14
+ ## [0.2.4] - 2021-01-22
15
+ ### Fixed
16
+ - Support Ruby 3 (thanks @zvkemp and @ef4)
17
+
18
+ ## [0.2.3] - 2020-09-01
19
+ ### Fixed
20
+ - Properly handle exceptions for invalid format types - #25 (thanks @shanet)
21
+
22
+ ### Changed
23
+ - Lower minimum Ruby requirement to 2.3 (thanks @elDub)
24
+
25
+ ## [0.2.2] - 2019-06-13
26
+ ### Changed
27
+ - Lower minimum Ruby requirement to 2.3 (thanks @elDub)
28
+
29
+ ## [0.2.1] - 2019-05-22
30
+ ### Added
31
+ - RescueRegistry::RailsTestingHelpers provides some helpers for easier testing in Rails applications.
32
+
10
33
  ## [0.2.0] - 2019-05-21
11
34
  ### Added
12
35
  - Support for non-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
 
@@ -9,6 +9,7 @@ module RescueRegistry
9
9
  autoload :ExceptionsApp, "rescue_registry/exceptions_app"
10
10
  autoload :ExceptionHandler, "rescue_registry/exception_handler"
11
11
  autoload :RailsExceptionHandler, "rescue_registry/exception_handler"
12
+ autoload :RailsTestHelpers, "rescue_registry/rails_test_helpers"
12
13
  autoload :Registry, "rescue_registry/registry"
13
14
  autoload :ResetContext, "rescue_registry/reset_context"
14
15
  autoload :ShowExceptions, "rescue_registry/show_exceptions"
@@ -45,6 +46,18 @@ module RescueRegistry
45
46
  context.rescue_registry.public_send(method, *args)
46
47
  end
47
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
48
61
  end
49
62
 
50
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
@@ -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
 
@@ -0,0 +1,42 @@
1
+ module RescueRegistry
2
+ # Helpers to improve the ease of testing error handling in Rails tests.
3
+ # These are not actually specific to RescueRegistry, but will certainly be useful for it.
4
+ module RailsTestHelpers
5
+ def handle_request_exceptions(handle = true, &block)
6
+ set_action_dispatch_property(:show_exceptions, handle, &block)
7
+ end
8
+
9
+ def handle_request_exceptions?
10
+ Rails.application.config.action_dispatch.show_exceptions
11
+ end
12
+
13
+ def show_detailed_exceptions(show = true, &block)
14
+ set_action_dispatch_property(:show_detailed_exceptions, show, &block)
15
+ end
16
+
17
+ def show_detailed_exceptions?
18
+ Rails.application.config.action_dispatch.show_detailed_exceptions
19
+ end
20
+
21
+ private
22
+
23
+ def set_action_dispatch_property(key, value)
24
+ if block_given?
25
+ original_value = Rails.application.config.action_dispatch.send(key)
26
+ end
27
+
28
+ Rails.application.config.action_dispatch.send("#{key}=", value)
29
+ # Also set this since it may have been cached
30
+ Rails.application.env_config["action_dispatch.#{key}"] = value
31
+
32
+ if block_given?
33
+ begin
34
+ yield
35
+ ensure
36
+ Rails.application.env_config["action_dispatch.#{key}"] = original_value
37
+ Rails.application.config.action_dispatch.send("#{key}=", original_value)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RescueRegistry
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.5"
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.0
4
+ version: 0.2.5
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-21 00:00:00.000000000 Z
11
+ date: 2021-03-09 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: []
@@ -100,6 +100,7 @@ files:
100
100
  - lib/rescue_registry/controller.rb
101
101
  - lib/rescue_registry/exception_handler.rb
102
102
  - lib/rescue_registry/exceptions_app.rb
103
+ - lib/rescue_registry/rails_test_helpers.rb
103
104
  - lib/rescue_registry/railtie.rb
104
105
  - lib/rescue_registry/registry.rb
105
106
  - lib/rescue_registry/reset_context.rb
@@ -113,23 +114,26 @@ metadata:
113
114
  bug_tracker_uri: https://github.com/wagenet/rescue_registry/issues
114
115
  changelog_uri: https://github.com/wagenet/rescue_registry/CHANGELOG.md
115
116
  source_code_uri: https://github.com/wagenet/rescue_registry
116
- post_install_message:
117
+ post_install_message:
117
118
  rdoc_options: []
118
119
  require_paths:
119
120
  - lib
120
121
  required_ruby_version: !ruby/object:Gem::Requirement
121
122
  requirements:
122
- - - "~>"
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '2.3'
126
+ - - "<"
123
127
  - !ruby/object:Gem::Version
124
- version: '2.4'
128
+ version: '3.1'
125
129
  required_rubygems_version: !ruby/object:Gem::Requirement
126
130
  requirements:
127
131
  - - ">="
128
132
  - !ruby/object:Gem::Version
129
133
  version: '0'
130
134
  requirements: []
131
- rubygems_version: 3.0.3
132
- signing_key:
135
+ rubygems_version: 3.2.3
136
+ signing_key:
133
137
  specification_version: 4
134
138
  summary: Registry for Rails Exceptions
135
139
  test_files: []