verikloak-rails 0.2.6 → 0.2.7

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: a6126b5013614bb5cb7c0594126c21456db9762a9e3d307108e5f8c1ce197155
4
- data.tar.gz: e8504432260a732881946e72cb5551e00178108ba641b802b78c4ca42879e664
3
+ metadata.gz: d96aa5ed90bc1dbc922ec263fecbccdb8dd122e51accced8776a969211e4f549
4
+ data.tar.gz: d7cc87f1b7cf857fbc707962860a596f35efa32f167c76e1bf50362090f6d5b6
5
5
  SHA512:
6
- metadata.gz: ecaf3de303c489d429c6157232f3159333ddec36e87ac0499784181e944c9fe25f59aceb72452b69f297bc7ff0761c069df13cf78ab776c5311a04d6d6c0e9be
7
- data.tar.gz: e335daefda43368d7c0b58b87372214a8e999bad0424c7e5e2e4e5d5f1ced49b51190e900865ff34d1a277a72eb6fd172b64fc559f0eb246fac4f1d114902bfc
6
+ metadata.gz: 518cf212cede738ce3e392a93f413b654ba138d4768afbe20811274129f93139aef1afbe5c24cbf3309cf7d99c978cf9a4ff6d8443b01cc7dae543da97f04c7c
7
+ data.tar.gz: 412639b3aa790ffae71cf53dc427e213ba5b9ae426270cbc6af3e1e0ce26c028abc98db14b0bce58153601f10a7b86c566b4ffdbfd7dcd954175008a6d146025
data/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.2.7] - 2025-09-23
11
+
12
+ ### Fixed
13
+ - Handle `RuntimeError` exceptions from `ActionDispatch::MiddlewareStack#insert_after` in Rails 8+
14
+ - Add `inserted` flag to prevent duplicate middleware insertion when fallback is used
15
+ - Enhance error handling to gracefully handle all middleware insertion failures
16
+
17
+ ### Changed
18
+ - Update middleware insertion candidates logic for better Rails version compatibility
19
+ - Rails 8+ now raises `RuntimeError` instead of the deprecated `ActionDispatch::MiddlewareStack::MiddlewareNotFound`
20
+ - Broaden exception handling to catch `StandardError` for robustness across Rails versions
21
+ - Improve logging and debugging information for middleware insertion failures
22
+
10
23
  ## [0.2.6] - 2025-09-23
11
24
 
12
25
  ### Fixed
@@ -136,13 +136,59 @@ module Verikloak
136
136
  # @param base_options [Hash] options to pass to the middleware
137
137
  # @return [void]
138
138
  def insert_middleware_after(stack, base_options)
139
- after = Verikloak::Rails.config.middleware_insert_after || ::Rails::Rack::Logger
140
- if after
141
- stack.insert_after after,
142
- ::Verikloak::Middleware,
143
- **base_options
139
+ candidates = middleware_insert_after_candidates
140
+ inserted = false
141
+
142
+ candidates.each do |candidate|
143
+ next unless candidate
144
+
145
+ begin
146
+ stack.insert_after candidate,
147
+ ::Verikloak::Middleware,
148
+ **base_options
149
+ inserted = true
150
+ break
151
+ rescue StandardError => e
152
+ # Handle middleware insertion failures:
153
+ # - Rails 8+: RuntimeError for missing middleware
154
+ # - Earlier versions: ActionDispatch::MiddlewareStack::MiddlewareNotFound
155
+ log_middleware_insertion_warning(candidate, e)
156
+ end
157
+ end
158
+
159
+ # Only use as fallback if insertion after a specific middleware failed
160
+ stack.use ::Verikloak::Middleware, **base_options unless inserted
161
+ end
162
+
163
+ # Build list of middleware to try as insertion points.
164
+ # Starts with the configured value (if any) and falls back to defaults
165
+ # that exist across supported Rails versions.
166
+ #
167
+ # @return [Array<Object>] ordered list of potential middleware targets
168
+ def middleware_insert_after_candidates
169
+ configured = Verikloak::Rails.config.middleware_insert_after
170
+
171
+ defaults = []
172
+ defaults << ::Rails::Rack::Logger if defined?(::Rails::Rack::Logger)
173
+ defaults << ::ActionDispatch::Executor if defined?(::ActionDispatch::Executor)
174
+ defaults << ::Rack::Head if defined?(::Rack::Head)
175
+ defaults << ::Rack::Runtime if defined?(::Rack::Runtime)
176
+
177
+ ([configured] + defaults).compact.uniq
178
+ end
179
+
180
+ # Log when a middleware insertion target cannot be found.
181
+ #
182
+ # @param candidate [Object] middleware we attempted to insert after
183
+ # @param error [StandardError] the exception raised during insertion
184
+ # @return [void]
185
+ def log_middleware_insertion_warning(candidate, error)
186
+ candidate_name = candidate.is_a?(Class) ? candidate.name : candidate.class.name
187
+ message = "[verikloak] Unable to insert after #{candidate_name}: #{error.message}"
188
+ if defined?(::Rails) && ::Rails.respond_to?(:logger) && ::Rails.logger
189
+ ::Rails.logger.warn(message)
144
190
  else
145
- stack.use ::Verikloak::Middleware, **base_options
191
+ warn(message)
146
192
  end
147
193
  end
148
194
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Verikloak
4
4
  module Rails
5
- VERSION = '0.2.6'
5
+ VERSION = '0.2.7'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verikloak-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - taiyaky
@@ -94,7 +94,7 @@ metadata:
94
94
  source_code_uri: https://github.com/taiyaky/verikloak-rails
95
95
  changelog_uri: https://github.com/taiyaky/verikloak-rails/blob/main/CHANGELOG.md
96
96
  bug_tracker_uri: https://github.com/taiyaky/verikloak-rails/issues
97
- documentation_uri: https://rubydoc.info/gems/verikloak-rails/0.2.6
97
+ documentation_uri: https://rubydoc.info/gems/verikloak-rails/0.2.7
98
98
  rubygems_mfa_required: 'true'
99
99
  rdoc_options: []
100
100
  require_paths: