Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 7673

Show
Ignore:
Timestamp:
09/28/07 20:57:39 (1 year ago)
Author:
nzkoz
Message:

Re-enable Routing optimisation code for _url methods, add defined?(request) to the guard conditions

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/lib/action_controller/routing_optimisation.rb

    r7605 r7673  
    4545        # Issues around request.host etc. 
    4646        def applicable? 
    47           kind != :url 
     47          true 
    4848        end 
    4949      end 
     
    6161          # argument, but we don't want to generate /foos/id2 
    6262          if number_of_arguments == 1 
    63             "args.size == 1 && !args.first.is_a?(Hash)" 
     63            "defined?(request) && args.size == 1 && !args.first.is_a?(Hash)" 
    6464          else 
    65             "args.size == #{number_of_arguments}" 
     65            "defined?(request) && args.size == #{number_of_arguments}" 
    6666          end 
    6767        end 
     
    9898      class PositionalArgumentsWithAdditionalParams < PositionalArguments 
    9999        def guard_condition 
    100           "args.size == #{route.segment_keys.size + 1}" 
     100          "defined?(request) && args.size == #{route.segment_keys.size + 1}" 
    101101        end 
    102102 
  • trunk/actionpack/lib/action_controller/url_rewriter.rb

    r7501 r7673  
    2222     
    2323    def self.included(base) #:nodoc: 
    24       original_optimise = ActionController::Routing.optimise_named_routes 
    25       ActionController::Routing.optimise_named_routes = false 
    26       ActionController::Routing::Routes.install_helpers base, :regenerate 
     24      ActionController::Routing::Routes.install_helpers base  
    2725      base.mattr_accessor :default_url_options 
    2826      base.default_url_options ||= default_url_options 
    29     ensure 
    30       ActionController::Routing.optimise_named_routes = original_optimise 
    3127    end 
    3228     
  • trunk/actionpack/test/controller/routing_test.rb

    r7666 r7673  
    176176  end 
    177177 
     178  def test_basic_named_route_with_relative_url_root 
     179    rs.add_named_route :home, '', :controller => 'content', :action => 'list'  
     180    x = setup_for_named_route 
     181    x.relative_url_root="/foo" 
     182    assert_equal("http://named.route.test/foo/", 
     183                 x.send(:home_url)) 
     184    assert_equal "/foo/", x.send(:home_path) 
     185  end 
     186 
    178187  def test_named_route_with_option 
    179188    rs.add_named_route :page, 'page/:title', :controller => 'content', :action => 'show_page' 
     
    229238    x = setup_for_named_route        
    230239    assert_equal("http://named.route.test/", x.send(:root_url)) 
    231     assert_equal("/relative/", x.send(:root_path)) 
     240    assert_equal("/", x.send(:root_path)) 
    232241  end 
    233242   
     
    282291    # No / to %2F in URI, only for query params.  
    283292    x = setup_for_named_route  
    284     assert_equal("/relative/file/hello/world", x.send(:path_path, 'hello/world')) 
     293    assert_equal("/file/hello/world", x.send(:path_path, 'hello/world')) 
    285294  end 
    286295   
     
    900909      @request ||= MockRequest.new(:host => "named.route.test", :method => :get) 
    901910    end 
     911     
     912    def relative_url_root=(value) 
     913      request.relative_url_root=value 
     914    end 
    902915  end 
    903916 
    904917  class MockRequest 
    905     attr_accessor :path, :path_parameters, :host, :subdomains, :domain, :method 
    906  
     918    attr_accessor :path, :path_parameters, :host, :subdomains, :domain, 
     919                  :method, :relative_url_root 
     920     
    907921    def initialize(values={}) 
    908922      values.each { |key, value| send("#{key}=", value) } 
     
    919933    def host_with_port 
    920934      (subdomains * '.') + '.' +  domain 
    921     end 
    922      
    923     def relative_url_root 
    924       '/relative' 
    925935    end 
    926936  end