aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorSamuel Lebeau <samuel.lebeau@gmail.com>2010-08-03 11:25:15 +0200
committerJosé Valim <jose.valim@gmail.com>2010-08-03 11:52:19 +0200
commitf01184ad9e7efbbcdb8581c93b92e16c61c7a6bd (patch)
treea348a6103b765f52373737e057400862e62c743e /actionpack/lib/action_dispatch
parente1142dfcae036bd8c6400962f9e07112b750b730 (diff)
downloadrails-f01184ad9e7efbbcdb8581c93b92e16c61c7a6bd.tar.gz
rails-f01184ad9e7efbbcdb8581c93b92e16c61c7a6bd.tar.bz2
rails-f01184ad9e7efbbcdb8581c93b92e16c61c7a6bd.zip
Avoid potentially expensive inspect call in router. [#4491 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/routing/route_set.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb
index 77688fe397..d23b580d97 100644
--- a/actionpack/lib/action_dispatch/routing/route_set.rb
+++ b/actionpack/lib/action_dispatch/routing/route_set.rb
@@ -392,10 +392,9 @@ module ActionDispatch
end
def generate
- error = ActionController::RoutingError.new("No route matches #{options.inspect}")
path, params = @set.set.generate(:path_info, named_route, options, recall, opts)
- raise error unless path
+ raise_routing_error unless path
params.reject! {|k,v| !v }
@@ -404,7 +403,7 @@ module ActionDispatch
path << "?#{params.to_query}" if params.any?
"#{script_name}#{path}"
rescue Rack::Mount::RoutingError
- raise error
+ raise_routing_error
end
def opts
@@ -421,6 +420,10 @@ module ActionDispatch
{:parameterize => parameterize}
end
+ def raise_routing_error
+ raise ActionController::RoutingError.new("No route matches #{options.inspect}")
+ end
+
def different_controller?
return false unless current_controller
controller.to_param != current_controller.to_param