mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix GH #4873. Allow swapping middleware of same class
This commit is contained in:
parent
7a72fdc7dc
commit
e7ec969895
2 changed files with 9 additions and 2 deletions
|
@ -93,8 +93,9 @@ module ActionDispatch
|
|||
end
|
||||
|
||||
def swap(target, *args, &block)
|
||||
insert_before(target, *args, &block)
|
||||
delete(target)
|
||||
index = assert_index(target, :before)
|
||||
insert(index, *args, &block)
|
||||
middlewares.delete_at(index + 1)
|
||||
end
|
||||
|
||||
def delete(target)
|
||||
|
|
|
@ -81,6 +81,12 @@ class MiddlewareStackTest < ActiveSupport::TestCase
|
|||
assert_equal BazMiddleware, @stack[0].klass
|
||||
end
|
||||
|
||||
test "swaps one middleware out for same middleware class" do
|
||||
assert_equal FooMiddleware, @stack[0].klass
|
||||
@stack.swap(FooMiddleware, FooMiddleware, Proc.new { |env| [500, {}, ['error!']] })
|
||||
assert_equal FooMiddleware, @stack[0].klass
|
||||
end
|
||||
|
||||
test "raise an error on invalid index" do
|
||||
assert_raise RuntimeError do
|
||||
@stack.insert("HiyaMiddleware", BazMiddleware)
|
||||
|
|
Loading…
Reference in a new issue