aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2011-10-31 16:26:11 -0400
committerAaron Patterson <aaron.patterson@gmail.com>2011-11-18 10:51:11 -0800
commit4589b2419b6c2f6d8b1ea0873999a4d0fa21bdb3 (patch)
treeacc00a1c2a54d13c9a1b6a26c06d210f767abbe9 /actionpack/lib/action_dispatch
parent3178cc9a80262d3bf7754f3507ef60243b46634f (diff)
downloadrails-4589b2419b6c2f6d8b1ea0873999a4d0fa21bdb3.tar.gz
rails-4589b2419b6c2f6d8b1ea0873999a4d0fa21bdb3.tar.bz2
rails-4589b2419b6c2f6d8b1ea0873999a4d0fa21bdb3.zip
require that all blocks have arity of 2
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/routing/redirection.rb15
1 files changed, 10 insertions, 5 deletions
diff --git a/actionpack/lib/action_dispatch/routing/redirection.rb b/actionpack/lib/action_dispatch/routing/redirection.rb
index 804991ad5f..27dbf72519 100644
--- a/actionpack/lib/action_dispatch/routing/redirection.rb
+++ b/actionpack/lib/action_dispatch/routing/redirection.rb
@@ -43,13 +43,19 @@ module ActionDispatch
path = args.shift
path_proc = if path.is_a?(String)
- proc { |params| (params.empty? || !path.match(/%\{\w*\}/)) ? path : (path % params) }
+ proc { |params, request| (params.empty? || !path.match(/%\{\w*\}/)) ? path : (path % params) }
elsif options.any?
options_proc(options)
elsif path.respond_to?(:call)
proc { |params, request| path.call(params, request) }
elsif block
- block
+ if block.arity < 2
+ msg = "redirect blocks with arity of #{block.arity} are deprecated. Your block must take 2 parameters: the environment, and a request object"
+ ActiveSupport::Deprecation.warn msg
+ lambda { |params, _| block.call(params) }
+ else
+ block
+ end
else
raise ArgumentError, "redirection argument not supported"
end
@@ -85,8 +91,7 @@ module ActionDispatch
lambda do |env|
req = Request.new(env)
- params = [req.symbolized_path_parameters]
- params << req if path_proc.arity > 1
+ params = [req.symbolized_path_parameters, req]
uri = URI.parse(path_proc.call(*params))
uri.scheme ||= req.scheme
@@ -107,4 +112,4 @@ module ActionDispatch
end
end
-end \ No newline at end of file
+end