diff options
| author | David Heinemeier Hansson <david@loudthinking.com> | 2008-11-04 18:14:29 +0100 |
|---|---|---|
| committer | David Heinemeier Hansson <david@loudthinking.com> | 2008-11-04 18:14:29 +0100 |
| commit | a909eecbbd42e70a5bc0e099485f07dc64db5d38 (patch) | |
| tree | a685d297c7f11fa2ea87a5dd69ad7052696532d8 /actionpack/lib/action_controller/routing | |
| parent | b29f95ed9a4f09674a187b237acc143ac5f4ddde (diff) | |
| parent | 18bf7b421d55c60029289edef1df409a58d021e4 (diff) | |
| download | rails-a909eecbbd42e70a5bc0e099485f07dc64db5d38.tar.gz rails-a909eecbbd42e70a5bc0e099485f07dc64db5d38.tar.bz2 rails-a909eecbbd42e70a5bc0e099485f07dc64db5d38.zip | |
Dont log the _method attribute either. Its already available in the header
Diffstat (limited to 'actionpack/lib/action_controller/routing')
| -rw-r--r-- | actionpack/lib/action_controller/routing/optimisations.rb | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/actionpack/lib/action_controller/routing/optimisations.rb b/actionpack/lib/action_controller/routing/optimisations.rb index 894d4109e4..0a87303bda 100644 --- a/actionpack/lib/action_controller/routing/optimisations.rb +++ b/actionpack/lib/action_controller/routing/optimisations.rb @@ -20,14 +20,20 @@ module ActionController class Optimiser attr_reader :route, :kind + GLOBAL_GUARD_CONDITIONS = [ + "(!defined?(default_url_options) || default_url_options.blank?)", + "(!defined?(controller.default_url_options) || controller.default_url_options.blank?)", + "defined?(request)", + "request" + ] def initialize(route, kind) @route = route @kind = kind end - def guard_condition - 'false' + def guard_conditions + ["false"] end def generation_code @@ -36,6 +42,7 @@ module ActionController def source_code if applicable? + guard_condition = (GLOBAL_GUARD_CONDITIONS + guard_conditions).join(" && ") "return #{generation_code} if #{guard_condition}\n" else "\n" @@ -57,14 +64,14 @@ module ActionController # return a string like "/people/#{@person.to_param}" # rather than triggering the expensive logic in +url_for+. class PositionalArguments < Optimiser - def guard_condition + def guard_conditions number_of_arguments = route.segment_keys.size # if they're using foo_url(:id=>2) it's one # argument, but we don't want to generate /foos/id2 if number_of_arguments == 1 - "(!defined?(default_url_options) || default_url_options.blank?) && defined?(request) && request && args.size == 1 && !args.first.is_a?(Hash)" + ["args.size == 1", "!args.first.is_a?(Hash)"] else - "(!defined?(default_url_options) || default_url_options.blank?) && defined?(request) && request && args.size == #{number_of_arguments}" + ["args.size == #{number_of_arguments}"] end end @@ -98,8 +105,13 @@ module ActionController # above, but it supports additional query parameters as the last # argument class PositionalArgumentsWithAdditionalParams < PositionalArguments - def guard_condition - "(!defined?(default_url_options) || default_url_options.blank?) && defined?(request) && request && args.size == #{route.segment_keys.size + 1} && !args.last.has_key?(:anchor) && !args.last.has_key?(:port) && !args.last.has_key?(:host)" + def guard_conditions + [ + "args.size == #{route.segment_keys.size + 1}", + "!args.last.has_key?(:anchor)", + "!args.last.has_key?(:port)", + "!args.last.has_key?(:host)" + ] end # This case uses almost the same code as positional arguments, |
