Merge pull request #4879 from kennyj/fix_4873

Fix GH #4873. Allow swapping same class middleware.
This commit is contained in:
José Valim
2012-02-04 06:31:59 -08:00
committed by José Valim
parent 9aa4c6d7ce
commit 9cb0e12e46
2 changed files with 9 additions and 2 deletions

View File

@@ -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)

View File

@@ -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)