mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merged pull request #313 from chadk/master.
[patch] Asset helpers should understand scheme-relative URLs
This commit is contained in:
commit
4ce14fb080
2 changed files with 17 additions and 2 deletions
|
@ -12,7 +12,7 @@ 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.
|
||||
|
@ -33,7 +33,7 @@ module ActionView
|
|||
end
|
||||
|
||||
def is_uri?(path)
|
||||
path =~ %r{^[-a-z]+://|^cid:}
|
||||
path =~ %r{^[-a-z]+://|^cid:|^//}
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -66,6 +66,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
%(auto_discovery_link_tag(:xml)) => %(<link href="http://www.example.com" rel="alternate" title="XML" type="application/xml" />),
|
||||
%(auto_discovery_link_tag(:rss, :action => "feed")) => %(<link href="http://www.example.com" rel="alternate" title="RSS" type="application/rss+xml" />),
|
||||
%(auto_discovery_link_tag(:rss, "http://localhost/feed")) => %(<link href="http://localhost/feed" rel="alternate" title="RSS" type="application/rss+xml" />),
|
||||
%(auto_discovery_link_tag(:rss, "//localhost/feed")) => %(<link href="//localhost/feed" rel="alternate" title="RSS" type="application/rss+xml" />),
|
||||
%(auto_discovery_link_tag(:rss, {:action => "feed"}, {:title => "My RSS"})) => %(<link href="http://www.example.com" rel="alternate" title="My RSS" type="application/rss+xml" />),
|
||||
%(auto_discovery_link_tag(:rss, {}, {:title => "My RSS"})) => %(<link href="http://www.example.com" rel="alternate" title="My RSS" type="application/rss+xml" />),
|
||||
%(auto_discovery_link_tag(nil, {}, {:type => "text/html"})) => %(<link href="http://www.example.com" rel="alternate" title="" type="text/html" />),
|
||||
|
@ -100,6 +101,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
|
||||
%(javascript_include_tag("http://example.com/all")) => %(<script src="http://example.com/all" type="text/javascript"></script>),
|
||||
%(javascript_include_tag("http://example.com/all.js")) => %(<script src="http://example.com/all.js" type="text/javascript"></script>),
|
||||
%(javascript_include_tag("//example.com/all.js")) => %(<script src="//example.com/all.js" type="text/javascript"></script>),
|
||||
}
|
||||
|
||||
StylePathToTag = {
|
||||
|
@ -129,6 +131,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
|
||||
%(stylesheet_link_tag("http://www.example.com/styles/style")) => %(<link href="http://www.example.com/styles/style" media="screen" rel="stylesheet" type="text/css" />),
|
||||
%(stylesheet_link_tag("http://www.example.com/styles/style.css")) => %(<link href="http://www.example.com/styles/style.css" media="screen" rel="stylesheet" type="text/css" />),
|
||||
%(stylesheet_link_tag("//www.example.com/styles/style.css")) => %(<link href="//www.example.com/styles/style.css" media="screen" rel="stylesheet" type="text/css" />),
|
||||
}
|
||||
|
||||
ImagePathToTag = {
|
||||
|
@ -157,6 +160,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
%(image_tag("slash..png")) => %(<img alt="Slash." src="/images/slash..png" />),
|
||||
%(image_tag(".pdf.png")) => %(<img alt=".pdf" src="/images/.pdf.png" />),
|
||||
%(image_tag("http://www.rubyonrails.com/images/rails.png")) => %(<img alt="Rails" src="http://www.rubyonrails.com/images/rails.png" />),
|
||||
%(image_tag("//www.rubyonrails.com/images/rails.png")) => %(<img alt="Rails" src="//www.rubyonrails.com/images/rails.png" />),
|
||||
%(image_tag("mouse.png", :mouseover => "/images/mouse_over.png")) => %(<img alt="Mouse" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" src="/images/mouse.png" />),
|
||||
%(image_tag("mouse.png", :mouseover => image_path("mouse_over.png"))) => %(<img alt="Mouse" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" src="/images/mouse.png" />),
|
||||
%(image_tag("mouse.png", :alt => nil)) => %(<img src="/images/mouse.png" />)
|
||||
|
@ -195,6 +199,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
%(video_tag("error.avi", "size" => "100 x 100")) => %(<video src="/videos/error.avi" />),
|
||||
%(video_tag("error.avi", "size" => "x")) => %(<video src="/videos/error.avi" />),
|
||||
%(video_tag("http://media.rubyonrails.org/video/rails_blog_2.mov")) => %(<video src="http://media.rubyonrails.org/video/rails_blog_2.mov" />),
|
||||
%(video_tag("//media.rubyonrails.org/video/rails_blog_2.mov")) => %(<video src="//media.rubyonrails.org/video/rails_blog_2.mov" />),
|
||||
%(video_tag(["multiple.ogg", "multiple.avi"])) => %(<video><source src="multiple.ogg" /><source src="multiple.avi" /></video>),
|
||||
%(video_tag(["multiple.ogg", "multiple.avi"], :size => "160x120", :controls => true)) => %(<video controls="controls" height="120" width="160"><source src="multiple.ogg" /><source src="multiple.avi" /></video>)
|
||||
}
|
||||
|
@ -217,6 +222,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
%(audio_tag("xml.wav")) => %(<audio src="/audios/xml.wav" />),
|
||||
%(audio_tag("rss.wav", :autoplay => true, :controls => true)) => %(<audio autoplay="autoplay" controls="controls" src="/audios/rss.wav" />),
|
||||
%(audio_tag("http://media.rubyonrails.org/audio/rails_blog_2.mov")) => %(<audio src="http://media.rubyonrails.org/audio/rails_blog_2.mov" />),
|
||||
%(audio_tag("//media.rubyonrails.org/audio/rails_blog_2.mov")) => %(<audio src="//media.rubyonrails.org/audio/rails_blog_2.mov" />),
|
||||
}
|
||||
|
||||
def test_auto_discovery_link_tag
|
||||
|
@ -505,6 +511,10 @@ class AssetTagHelperTest < ActionView::TestCase
|
|||
assert_equal %(<img alt="Rails" src="http://www.example.com/rails.png" />), image_tag("http://www.example.com/rails.png")
|
||||
end
|
||||
|
||||
def test_should_skip_asset_id_on_scheme_relative_url
|
||||
assert_equal %(<img alt="Rails" src="//www.example.com/rails.png" />), image_tag("//www.example.com/rails.png")
|
||||
end
|
||||
|
||||
def test_should_use_preset_asset_id
|
||||
ENV["RAILS_ASSET_ID"] = "4500"
|
||||
assert_equal %(<img alt="Rails" src="/images/rails.png?4500" />), image_tag("rails.png")
|
||||
|
@ -1095,6 +1105,11 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
|||
assert_dom_equal(%(<link href="http://bar.example.com/stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />), stylesheet_link_tag("http://bar.example.com/stylesheets/style.css"))
|
||||
end
|
||||
|
||||
def test_should_ignore_asset_host_on_scheme_relative_url
|
||||
@controller.config.asset_host = "http://assets.example.com"
|
||||
assert_dom_equal(%(<link href="//bar.example.com/stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />), stylesheet_link_tag("//bar.example.com/stylesheets/style.css"))
|
||||
end
|
||||
|
||||
def test_should_wildcard_asset_host_between_zero_and_four
|
||||
@controller.config.asset_host = 'http://a%d.example.com'
|
||||
assert_match(%r(http://a[0123].example.com/collaboration/hieraki/images/xml.png), image_path('xml.png'))
|
||||
|
|
Loading…
Reference in a new issue