aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2007-10-29 04:01:58 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2007-10-29 04:01:58 +0000
commitc240f2d48a3677954c4bcb57c36587833cbda2c0 (patch)
treed22862dec98485724cd2181354c788c32a5fce3c
parent204c2755e2531c5c35077949fbc90e3cb1788b9c (diff)
downloadrails-c240f2d48a3677954c4bcb57c36587833cbda2c0.tar.gz
rails-c240f2d48a3677954c4bcb57c36587833cbda2c0.tar.bz2
rails-c240f2d48a3677954c4bcb57c36587833cbda2c0.zip
compute_public_path behaves well with mailers also. Closes #10014.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8052 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/lib/action_view/helpers/asset_tag_helper.rb22
1 files changed, 16 insertions, 6 deletions
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helper.rb b/actionpack/lib/action_view/helpers/asset_tag_helper.rb
index c38462ba9f..f0229980b0 100644
--- a/actionpack/lib/action_view/helpers/asset_tag_helper.rb
+++ b/actionpack/lib/action_view/helpers/asset_tag_helper.rb
@@ -387,10 +387,18 @@ module ActionView
# a single or wildcarded asset host, if configured, with the correct
# request protocol.
def compute_public_path(source, dir, ext = nil, include_host = true)
- cache_key = [ @controller.request.protocol,
- ActionController::Base.asset_host,
- @controller.request.relative_url_root,
- dir, source, ext, include_host ].join
+ has_request = @controller.respond_to?(:request)
+
+ cache_key =
+ if has_request
+ [ @controller.request.protocol,
+ ActionController::Base.asset_host,
+ @controller.request.relative_url_root,
+ dir, source, ext, include_host ].join
+ else
+ [ ActionController::Base.asset_host,
+ dir, source, ext, include_host ].join
+ end
ActionView::Base.computed_public_paths[cache_key] ||=
begin
@@ -400,13 +408,15 @@ module ActionView
source
else
source = "/#{dir}/#{source}" unless source[0] == ?/
- source = "#{@controller.request.relative_url_root}#{source}"
+ if has_request
+ source = "#{@controller.request.relative_url_root}#{source}"
+ end
rewrite_asset_path!(source)
if include_host
host = compute_asset_host(source)
- unless host.blank? or host =~ %r{^[-a-z]+://}
+ if has_request && !host.blank? && host !~ %r{^[-a-z]+://}
host = "#{@controller.request.protocol}#{host}"
end