aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_controller/filters.rb8
-rw-r--r--actionpack/test/controller/filters_test.rb11
2 files changed, 9 insertions, 10 deletions
diff --git a/actionpack/lib/action_controller/filters.rb b/actionpack/lib/action_controller/filters.rb
index d7fb276171..337c489f07 100644
--- a/actionpack/lib/action_controller/filters.rb
+++ b/actionpack/lib/action_controller/filters.rb
@@ -583,10 +583,12 @@ module ActionController #:nodoc:
when filter.respond_to?(:call)
if filter.is_a?(Method)
MethodFilter
- elsif filter.arity == 1
- ProcFilter
else
- ProcWithCallFilter
+ case filter.arity
+ when 1; ProcFilter
+ when 2; ProcWithCallFilter
+ else raise ArgumentError, 'Filter blocks must take one or two arguments.'
+ end
end
when filter.respond_to?(:filter)
ClassFilter
diff --git a/actionpack/test/controller/filters_test.rb b/actionpack/test/controller/filters_test.rb
index d149ee1b18..7cf2c9d318 100644
--- a/actionpack/test/controller/filters_test.rb
+++ b/actionpack/test/controller/filters_test.rb
@@ -696,10 +696,6 @@ class ControllerWithProcFilter < PostsController
end
end
-class ControllerWithWrongFilterType < PostsController
- around_filter lambda { yield }, :only => :no_raise
-end
-
class ControllerWithNestedFilters < ControllerWithSymbolAsFilter
around_filter :raise_before, :raise_after, :without_exception, :only => :raises_both
end
@@ -746,14 +742,15 @@ class YieldingAroundFiltersTest < Test::Unit::TestCase
assert_equal 1, ControllerWithFilterClass.filter_chain.size
assert_equal 1, ControllerWithFilterInstance.filter_chain.size
assert_equal 3, ControllerWithSymbolAsFilter.filter_chain.size
- assert_equal 1, ControllerWithWrongFilterType.filter_chain.size
assert_equal 6, ControllerWithNestedFilters.filter_chain.size
assert_equal 4, ControllerWithAllTypesOfFilters.filter_chain.size
end
def test_wrong_filter_type
- assert_raise(ActionController::ActionControllerError) do
- test_process(ControllerWithWrongFilterType,'no_raise')
+ assert_raise ArgumentError do
+ Class.new PostsController do
+ around_filter lambda { yield }
+ end
end
end