diff options
author | Michael Koziarski <michael@koziarski.com> | 2007-09-17 09:30:18 +0000 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2007-09-17 09:30:18 +0000 |
commit | 7cb26b5d2d0ecb4945f01b1aa1d398eb85c9f1a4 (patch) | |
tree | 24f361b1f6e4e6738ebb71344dcb61f0ac2f50fa /actionpack/lib/action_controller/routing_optimisation.rb | |
parent | acbec3e565909da5811488e88066a01f71b68a94 (diff) | |
download | rails-7cb26b5d2d0ecb4945f01b1aa1d398eb85c9f1a4.tar.gz rails-7cb26b5d2d0ecb4945f01b1aa1d398eb85c9f1a4.tar.bz2 rails-7cb26b5d2d0ecb4945f01b1aa1d398eb85c9f1a4.zip |
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
Diffstat (limited to 'actionpack/lib/action_controller/routing_optimisation.rb')
-rw-r--r-- | actionpack/lib/action_controller/routing_optimisation.rb | 22 |
1 files changed, 20 insertions, 2 deletions
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] |