Merge pull request #333 from bhollis/asset_hash
Make asset_hash work with asset_host
This commit is contained in:
commit
4fc9492aae
15 changed files with 84 additions and 24 deletions
|
@ -24,7 +24,14 @@ module Middleman::CoreExtensions::Assets
|
|||
# @return [String] The fully qualified asset url
|
||||
def asset_url(path, prefix="")
|
||||
# Don't touch assets which already have a full path
|
||||
path.include?("://") ? path : File.join(http_prefix, prefix, path)
|
||||
if path.include?("//")
|
||||
path
|
||||
else # rewrite paths to use their destination path
|
||||
path = File.join(prefix, path)
|
||||
path = sitemap.page(path).destination_path if sitemap.exists?(path)
|
||||
|
||||
File.join(http_prefix, path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@ Feature: Assets get a file hash appended to their and references to them are upd
|
|||
| images/100px-5fd6fb90.jpg |
|
||||
| images/100px-5fd6fb90.gif |
|
||||
| javascripts/application-1d8d5276.js |
|
||||
| stylesheets/site-92072d15.css |
|
||||
| stylesheets/site-8c28fde3.css |
|
||||
| index.html |
|
||||
| subdir/index.html |
|
||||
| other/index.html |
|
||||
|
@ -20,35 +20,47 @@ Feature: Assets get a file hash appended to their and references to them are upd
|
|||
| stylesheets/site.css |
|
||||
|
||||
And the file "javascripts/application-1d8d5276.js" should contain "img.src = '/images/100px-5fd6fb90.jpg'"
|
||||
# TODO: This stylesheet should use the SASS "image-url" helper but can't because of https://github.com/middleman/middleman/issues/283
|
||||
And the file "stylesheets/site-92072d15.css" should contain 'background-image: url("/images/100px-5fd6fb90.jpg")'
|
||||
And the file "index.html" should contain 'href="stylesheets/site-92072d15.css"'
|
||||
And the file "stylesheets/site-8c28fde3.css" should contain "background-image: url('../images/100px-5fd6fb90.jpg')"
|
||||
And the file "index.html" should contain 'href="stylesheets/site-8c28fde3.css"'
|
||||
And the file "index.html" should contain 'src="javascripts/application-1d8d5276.js"'
|
||||
And the file "index.html" should contain 'src="images/100px-5fd6fb90.jpg"'
|
||||
And the file "subdir/index.html" should contain 'href="../stylesheets/site-92072d15.css"'
|
||||
And the file "subdir/index.html" should contain 'href="../stylesheets/site-8c28fde3.css"'
|
||||
And the file "subdir/index.html" should contain 'src="../javascripts/application-1d8d5276.js"'
|
||||
And the file "subdir/index.html" should contain 'src="../images/100px-5fd6fb90.jpg"'
|
||||
And the file "other/index.html" should contain 'href="../stylesheets/site-92072d15.css"'
|
||||
And the file "other/index.html" should contain 'href="../stylesheets/site-8c28fde3.css"'
|
||||
And the file "other/index.html" should contain 'src="../javascripts/application-1d8d5276.js"'
|
||||
And the file "other/index.html" should contain 'src="../images/100px-5fd6fb90.jpg"'
|
||||
|
||||
Scenario: Hashed assets work in preview server
|
||||
Given the Server is running at "asset-hash-app"
|
||||
When I go to "/"
|
||||
Then I should see 'href="stylesheets/site-92072d15.css"'
|
||||
Then I should see 'href="stylesheets/site-8c28fde3.css"'
|
||||
And I should see 'src="javascripts/application-1d8d5276.js"'
|
||||
And I should see 'src="images/100px-5fd6fb90.jpg"'
|
||||
When I go to "/subdir/"
|
||||
Then I should see 'href="../stylesheets/site-92072d15.css"'
|
||||
Then I should see 'href="../stylesheets/site-8c28fde3.css"'
|
||||
And I should see 'src="../javascripts/application-1d8d5276.js"'
|
||||
And I should see 'src="../images/100px-5fd6fb90.jpg"'
|
||||
When I go to "/other/"
|
||||
Then I should see 'href="../stylesheets/site-92072d15.css"'
|
||||
Then I should see 'href="../stylesheets/site-8c28fde3.css"'
|
||||
And I should see 'src="../javascripts/application-1d8d5276.js"'
|
||||
And I should see 'src="../images/100px-5fd6fb90.jpg"'
|
||||
When I go to "/javascripts/application-1d8d5276.js"
|
||||
Then I should see "img.src = '/images/100px-5fd6fb90.jpg'"
|
||||
When I go to "/stylesheets/site-92072d15.css"
|
||||
Then I should see 'background-image: url("/images/100px-5fd6fb90.jpg")'
|
||||
When I go to "/stylesheets/site-8c28fde3.css"
|
||||
Then I should see "background-image: url('../images/100px-5fd6fb90.jpg')"
|
||||
|
||||
# Scenario: Enabling an asset host still produces hashed files and references
|
||||
Scenario: Enabling an asset host still produces hashed files and references
|
||||
Given the Server is running at "asset-hash-host-app"
|
||||
When I go to "/"
|
||||
Then I should see 'href="http://middlemanapp.com/stylesheets/site-8c28fde3.css"'
|
||||
And I should see 'src="http://middlemanapp.com/images/100px-5fd6fb90.jpg"'
|
||||
When I go to "/subdir/"
|
||||
Then I should see 'href="http://middlemanapp.com/stylesheets/site-8c28fde3.css"'
|
||||
And I should see 'src="http://middlemanapp.com/images/100px-5fd6fb90.jpg"'
|
||||
When I go to "/other/"
|
||||
Then I should see 'href="http://middlemanapp.com/stylesheets/site-8c28fde3.css"'
|
||||
And I should see 'src="http://middlemanapp.com/images/100px-5fd6fb90.jpg"'
|
||||
# Asset helpers don't appear to work from Compass right now
|
||||
# When I go to "/stylesheets/site-8c28fde3.css"
|
||||
# Then I should see "background-image: url('http://middlemanapp.com/images/100px-5fd6fb90.jpg')"
|
|
@ -5,22 +5,23 @@ Feature: Generate mtime-based query string for busting browser caches
|
|||
Given "cache_buster" feature is "disabled"
|
||||
And the Server is running at "cache-buster-app"
|
||||
When I go to "/stylesheets/relative_assets.css"
|
||||
Then I should not see "?"
|
||||
Then I should see "blank.gif'"
|
||||
|
||||
Scenario: Rendering html with the feature disabled
|
||||
Given "cache_buster" feature is "disabled"
|
||||
And the Server is running at "cache-buster-app"
|
||||
When I go to "/cache-buster.html"
|
||||
Then I should not see "?"
|
||||
Then I should see 'site.css"'
|
||||
|
||||
Scenario: Rendering css with the feature enabled
|
||||
Given "cache_buster" feature is "enabled"
|
||||
And the Server is running at "cache-buster-app"
|
||||
When I go to "/stylesheets/relative_assets.css"
|
||||
Then I should see "?"
|
||||
Then I should see "blank.gif?"
|
||||
|
||||
Scenario: Rendering html with the feature enabled
|
||||
Given "cache_buster" feature is "enabled"
|
||||
And the Server is running at "cache-buster-app"
|
||||
When I go to "/cache-buster.html"
|
||||
Then I should see "?"
|
||||
Then I should see "site.css?"
|
||||
Then I should see "blank.gif?"
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
#main {
|
||||
padding: 50px;
|
||||
// Can't use image-url until compass problem is fixed: https://github.com/middleman/middleman/issues/283
|
||||
// background-image: image-url('100px.jpg');
|
||||
background-image: url('/images/100px.jpg');
|
||||
background-image: image-url('100px.jpg');
|
||||
}
|
6
middleman-more/fixtures/asset-hash-host-app/config.rb
Normal file
6
middleman-more/fixtures/asset-hash-host-app/config.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
|
||||
activate :asset_hash
|
||||
activate :directory_indexes
|
||||
activate :asset_host
|
||||
|
||||
set :asset_host, 'http://middlemanapp.com'
|
Binary file not shown.
After Width: | Height: | Size: 334 B |
Binary file not shown.
After Width: | Height: | Size: 334 B |
Binary file not shown.
After Width: | Height: | Size: 216 B |
|
@ -0,0 +1,6 @@
|
|||
<% content_for :head do %>
|
||||
<title>The Middleman!</title>
|
||||
<% end %>
|
||||
|
||||
<h2>Image url:</h2>
|
||||
<%= image_tag('100px.jpg') %>
|
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<%= stylesheet_link_tag "site" %>
|
||||
<%= yield_content :head %>
|
||||
</head>
|
||||
|
||||
<body class="<%= page_classes %>">
|
||||
|
||||
<div id="main" role="main">
|
||||
<%= yield %>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,2 @@
|
|||
<h2>Image url:</h2>
|
||||
<img src="<%= image_path('100px.jpg') %>">
|
|
@ -0,0 +1,4 @@
|
|||
#main {
|
||||
padding: 50px;
|
||||
background-image: image-url('100px.jpg');
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<% content_for :head do %>
|
||||
<title>The Middleman!</title>
|
||||
<% end %>
|
||||
|
||||
<h2>Image url:</h2>
|
||||
<%= image_tag('100px.jpg') %>
|
|
@ -1,2 +1,3 @@
|
|||
<%= stylesheet_link_tag "site.css" %>
|
||||
<%= javascript_include_tag "empty-with-include.js" %>
|
||||
<%= javascript_include_tag "empty-with-include.js" %>
|
||||
<%= image_tag "blank.gif" %>
|
||||
|
|
|
@ -54,7 +54,7 @@ module Middleman::Extensions
|
|||
elsif sitemap.exists?(real_path_static)
|
||||
page = sitemap.page(real_path_static)
|
||||
if !page.template?
|
||||
http_path << "?" + File.mtime(result[0]).strftime("%s")
|
||||
http_path << "?" + File.mtime(page.source_file).strftime("%s")
|
||||
else
|
||||
# It's a template, possible with partials. We can't really know when
|
||||
# it's updated, so generate fresh cache buster every time durin
|
||||
|
@ -71,4 +71,4 @@ module Middleman::Extensions
|
|||
|
||||
# Register the extension
|
||||
# register :cache_buster, CacheBuster
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue