I am not sure if there is an existing way to do this but with asset_sync the idea is that assets are served from S3 or some CDN(e.g. cloudfront) thus not needing to be part of the application slug. Is it possible to have /assets in .slugignore on Heroku and still get asset:precompile and asset_sync to work? If I just put /assets in .slugignore, they are not compiled with the digest and references to assets are without the fingerprint and thus don't work.
Editing .slugignore don't work there, because excluding files begins before all compilation steps on Heroku. But we need to compile these all, move these to S3 and only after that delete these.
I wrote some code into my Rakefile, small script, that deletes all unusable files by extension filter:
Rake::Task["assets:precompile"].enhance do
puts 'my assets:precompile hook is started!'
dir_path = "#{Dir.pwd}/public/sites-fromfuture-net/"
records = Dir.glob("#{dir_path}**/*")
records.each do |f|
if f =~ /.*.png$/ or
f =~ /.*.jpg$/ or
f =~ /.*.eot$/ or
f =~ /.*.svg$/ or
f =~ /.*.woff$/ or
f =~ /.*.ttf$/ or
f =~ /.*.otf$/ or
f =~ /.*.css$/ or
f =~ /.*.js$/ or
f =~ /.*.wav$/ then
File.delete(f)
end
end
# puts Dir.glob("#{dir_path}**/*")
puts 'my assets:precompile hook is finished!'
end
And one more thing: I use a heroku-deflater gem, which gzips all css and js assets, so I delete all .css and .js files by script but don't delete .css.gz and .js.gz files, because of rails assets checking.
Have you read this article? - https://devcenter.heroku.com/articles/cdn-asset-host-rails31
The 'Syncing assets' section seems to indicate that the assets can be precompiled on heroku and then the asset_sync gem will upload them from there to your s3 bucket (as part of the precompile step), the article makes no mention of using .slugignore
来源:https://stackoverflow.com/questions/13149758/put-assets-in-slugignore-for-heroku-deployments-with-asset-sync-s3-cdn