diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-07 00:12:43 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-07 00:12:43 +0000 |
commit | 3b13a09e89f4edaf07e77fea6b0fd529485c1ead (patch) | |
tree | 874f00d4d3d605e96fe61dd9716ab8a35d45ac47 /actionpack | |
parent | 2b326a7155ec74c7dad2c7adbd4356976847d411 (diff) | |
download | rails-3b13a09e89f4edaf07e77fea6b0fd529485c1ead.tar.gz rails-3b13a09e89f4edaf07e77fea6b0fd529485c1ead.tar.bz2 rails-3b13a09e89f4edaf07e77fea6b0fd529485c1ead.zip |
Filter procs must take 1 or 2 arguments. Raise ArgumentError otherwise.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8583 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
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 |