From 7cb26b5d2d0ecb4945f01b1aa1d398eb85c9f1a4 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Mon, 17 Sep 2007 09:30:18 +0000 Subject: Disable optimisation code for UrlWriter as request.host doesn't make sense there. Don't try to use the .to_query method when the route has no dynamic segments. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7501 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../lib/action_controller/routing_optimisation.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/action_controller/routing_optimisation.rb') diff --git a/actionpack/lib/action_controller/routing_optimisation.rb b/actionpack/lib/action_controller/routing_optimisation.rb index eaff1869dd..7cf85c9b9a 100644 --- a/actionpack/lib/action_controller/routing_optimisation.rb +++ b/actionpack/lib/action_controller/routing_optimisation.rb @@ -13,8 +13,8 @@ module ActionController def generate_optimisation_block(route, kind) return "" unless route.optimise? OPTIMISERS.inject("") do |memo, klazz| - optimiser = klazz.new(route, kind) - memo << "return #{optimiser.generation_code} if #{optimiser.guard_condition}\n" + memo << klazz.new(route, kind).source_code + memo end end @@ -32,6 +32,18 @@ module ActionController def generation_code 'nil' end + + def source_code + if applicable? + "return #{generation_code} if #{guard_condition}\n" + else + "\n" + end + end + + def applicable? + true + end end # Given a route: @@ -89,6 +101,12 @@ module ActionController def generation_code super.insert(-2, '?#{args.last.to_query}') end + + # To avoid generating http://localhost/?host=foo.example.com we + # can't use this optimisation on routes without any segments + def applicable? + route.segment_keys.size > 0 + end end OPTIMISERS = [PositionalArguments, PositionalArgumentsWithAdditionalParams] -- cgit v1.2.3