summary refs log tree commit
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2011-01-03 18:08:18 -0600
committerJoshua Peek <josh@joshpeek.com>2011-01-03 18:08:18 -0600
commitd7a3bb21684557b55920cc48d6011be528279421 (patch)
treee4ec9f8aba15151c8d76a0e5cf27dc34eb780d53
parent66ef0e47ea4ea2958c25aa33370b7d74a286a22c (diff)
downloadrack-d7a3bb21684557b55920cc48d6011be528279421.tar.gz
Extract Request#base_url
-rw-r--r--lib/rack/request.rb10
-rw-r--r--test/spec_request.rb9
2 files changed, 14 insertions, 5 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb
index 5a36d4d6..49240f17 100644
--- a/lib/rack/request.rb
+++ b/lib/rack/request.rb
@@ -248,8 +248,7 @@ module Rack
       @env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"
     end
 
-    # Tries to return a remake of the original request URL as a string.
-    def url
+    def base_url
       url = scheme + "://"
       url << host
 
@@ -258,11 +257,14 @@ module Rack
         url << ":#{port}"
       end
 
-      url << fullpath
-
       url
     end
 
+    # Tries to return a remake of the original request URL as a string.
+    def url
+      base_url + fullpath
+    end
+
     def path
       script_name + path_info
     end
diff --git a/test/spec_request.rb b/test/spec_request.rb
index f3339669..6765edca 100644
--- a/test/spec_request.rb
+++ b/test/spec_request.rb
@@ -360,6 +360,13 @@ describe Rack::Request do
     req.env.should == e
   end
 
+  should "restore the base URL" do
+    Rack::Request.new(Rack::MockRequest.env_for("")).base_url.
+      should.equal "http://example.org"
+    Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).base_url.
+      should.equal "http://example.org"
+  end
+
   should "restore the URL" do
     Rack::Request.new(Rack::MockRequest.env_for("")).url.
       should.equal "http://example.org/"
@@ -550,7 +557,7 @@ EOF
 
     lambda { req.POST }.should.raise(EOFError)
   end
-  
+
   should "correctly parse the part name from Content-Id header" do
     input = <<EOF
 --AaB03x\r