diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/filters.rb | 8 | ||||
-rw-r--r-- | actionpack/test/controller/filters_test.rb | 11 |
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 |