aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/url_rewriter.rb3
-rw-r--r--actionpack/test/controller/url_test.rb21
3 files changed, 25 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 85c4b41f86..6bcc7dd865 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Added :application_prefix to url_for and friends that makes it easier to setup Rails in non-vhost environments #516 [Jamis Buck]
+
* Added :encode option to mail_to that'll allow you to masquarede the email address behind javascript or hex encoding #494 [Lucas Carlson]
* Fixed that the content-header was being set to application/octet_stream instead of application/octet-stream on send_date/file [Alexey]
diff --git a/actionpack/lib/action_controller/url_rewriter.rb b/actionpack/lib/action_controller/url_rewriter.rb
index fa003119ec..dadae7c34b 100644
--- a/actionpack/lib/action_controller/url_rewriter.rb
+++ b/actionpack/lib/action_controller/url_rewriter.rb
@@ -1,7 +1,7 @@
module ActionController
# Rewrites urls for Base.redirect_to and Base.url_for in the controller.
class UrlRewriter #:nodoc:
- VALID_OPTIONS = [:action, :action_prefix, :action_suffix, :module, :controller, :controller_prefix, :anchor, :params, :path_params, :id, :only_path, :overwrite_params, :host, :protocol ]
+ VALID_OPTIONS = [:action, :action_prefix, :action_suffix, :application_prefix, :module, :controller, :controller_prefix, :anchor, :params, :path_params, :id, :only_path, :overwrite_params, :host, :protocol ]
def initialize(request, controller, action)
@request, @controller, @action = request, controller, action
@@ -41,6 +41,7 @@ module ActionController
rewritten_url << (options[:protocol] || @request.protocol) unless options[:only_path]
rewritten_url << (options[:host] || @request.host_with_port) unless options[:only_path]
+ rewritten_url << options[:application_prefix] if options[:application_prefix]
rewritten_url << path
rewritten_url << build_query_string(new_parameters(options)) if options[:params] || options[:overwrite_params]
rewritten_url << "##{options[:anchor]}" if options[:anchor]
diff --git a/actionpack/test/controller/url_test.rb b/actionpack/test/controller/url_test.rb
index 8315830776..f7f08a2fe5 100644
--- a/actionpack/test/controller/url_test.rb
+++ b/actionpack/test/controller/url_test.rb
@@ -453,4 +453,25 @@ class UrlTest < Test::Unit::TestCase
url.rewrite({ :controller => "msg", :action_prefix => "allous", :action => "new" })
)
end
+
+ def test_clean_application_prefix
+ assert_equal "http://www.singlefile.com/namespace/library/books/ISBN/0743536703/show",
+ @library_url.rewrite(:application_prefix => "/namespace")
+ end
+
+ def test_clean_application_prefix_with_controller_prefix
+ assert_equal "http://www.singlefile.com/namespace/shop/",
+ @library_url.rewrite(:application_prefix => "/namespace",
+ :controller_prefix => "shop" )
+ end
+
+ def test_blank_application_prefix
+ assert_equal "http://www.singlefile.com/library/books/ISBN/0743536703/show",
+ @library_url.rewrite(:application_prefix => "")
+ end
+
+ def test_nil_application_prefix
+ assert_equal "http://www.singlefile.com/library/books/ISBN/0743536703/show",
+ @library_url.rewrite(:application_prefix => nil)
+ end
end