aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-01-07 00:12:43 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2008-01-07 00:12:43 +0000
commit3b13a09e89f4edaf07e77fea6b0fd529485c1ead (patch)
tree874f00d4d3d605e96fe61dd9716ab8a35d45ac47
parent2b326a7155ec74c7dad2c7adbd4356976847d411 (diff)
downloadrails-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
-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