diff options
author | Chad Krsek <chad.krsek@gmail.com> | 2011-04-25 21:57:28 -0700 |
---|---|---|
committer | Chad Krsek <chad.krsek@gmail.com> | 2011-04-25 21:57:28 -0700 |
commit | 057412ce38ead06307a887dca333837a99f84f22 (patch) | |
tree | 7e0bf2d7f8764e8ce408f69a77103570fb799e0d /actionpack/lib/action_view/helpers | |
parent | 933644519c1ea639440379d813876f1edc12ca59 (diff) | |
download | rails-057412ce38ead06307a887dca333837a99f84f22.tar.gz rails-057412ce38ead06307a887dca333837a99f84f22.tar.bz2 rails-057412ce38ead06307a887dca333837a99f84f22.zip |
asset helpers should understand scheme-relative URLs
Diffstat (limited to 'actionpack/lib/action_view/helpers')
-rw-r--r-- | actionpack/lib/action_view/helpers/asset_paths.rb | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/actionpack/lib/action_view/helpers/asset_paths.rb b/actionpack/lib/action_view/helpers/asset_paths.rb index 55a4c442fd..0429e60cd5 100644 --- a/actionpack/lib/action_view/helpers/asset_paths.rb +++ b/actionpack/lib/action_view/helpers/asset_paths.rb @@ -12,13 +12,13 @@ module ActionView @controller = controller end - # Add the extension +ext+ if not present. Return full URLs otherwise untouched. + # Add the extension +ext+ if not present. Return full or scheme-relative URLs otherwise untouched. # Prefix with <tt>/dir/</tt> if lacking a leading +/+. Account for relative URL # roots. Rewrite the asset path for cache-busting asset ids. Include # asset host, if configured, with the correct request protocol. def compute_public_path(source, dir, ext = nil, include_host = true) source = source.to_s - return source if is_uri?(source) + return source if is_uri?(source) || is_scheme_relative_uri?(source) source = rewrite_extension(source, dir, ext) if ext source = "/#{dir}/#{source}" unless source[0] == ?/ @@ -36,6 +36,13 @@ module ActionView path =~ %r{^[-a-z]+://|^cid:} end + # A URI relative to a base URI's scheme? + # See http://labs.apache.org/webarch/uri/rfc/rfc3986.html#relative-normal + # "//g" => "http://g" + def is_scheme_relative_uri?(path) + path =~ %r{^//} + end + private def rewrite_extension(source, dir, ext) |