diff options
author | José Valim <jose.valim@gmail.com> | 2010-01-14 01:31:17 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-01-14 01:31:17 +0100 |
commit | 35933822dec7be3f895c7a3f1440d72c982aebdd (patch) | |
tree | df9417f88ac481120bc049790185840f15fa4e42 /actionpack/lib/action_dispatch | |
parent | 2835ec6134b1e5b706824b568dfaba24672b7409 (diff) | |
download | rails-35933822dec7be3f895c7a3f1440d72c982aebdd.tar.gz rails-35933822dec7be3f895c7a3f1440d72c982aebdd.tar.bz2 rails-35933822dec7be3f895c7a3f1440d72c982aebdd.zip |
Ensure optional path scopes are properly handled.
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index 5009ed001c..bad90df2e3 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -68,13 +68,9 @@ module ActionDispatch end def normalize_path(path) - path = nil if path == "" - path = "#{@scope[:path]}#{path}" if @scope[:path] - path = Rack::Mount::Utils.normalize_path(path) if path - - raise ArgumentError, "path is required" unless path - - path + path = "#{@scope[:path]}#{path}" + raise ArgumentError, "path is required" if path.empty? + Mapper.normalize_path(path) end def app @@ -160,6 +156,14 @@ module ActionDispatch end end + # Invokes Rack::Mount::Utils.normalize path and ensure that + # (:locale) becomes (/:locale) instead of /(:locale). + def self.normalize_path(path) + path = Rack::Mount::Utils.normalize_path(path) + path.sub!(/^\/\(+\/?:/, '(/:') + path + end + module Base def initialize(set) @set = set @@ -245,7 +249,7 @@ module ActionDispatch if path = options.delete(:path) path_set = true - path, @scope[:path] = @scope[:path], Rack::Mount::Utils.normalize_path(@scope[:path].to_s + path.to_s) + path, @scope[:path] = @scope[:path], Mapper.normalize_path(@scope[:path].to_s + path.to_s) else path_set = false end |