使用asset_sync(S3 / CDN)将./资产放入.slugignore进行Heroku部署

我不确定是否有现成的方法可以做到这一点但是对于asset_sync,我们的想法是资产是从S3或某些CDN(例如cloudfront)提供的,因此不需要成为应用程序slug的一部分。 是否有可能在Heroku上的.slugignore中拥有/ assets并且仍然可以获得资产:precompile和asset_sync可以工作吗? 如果我只是将/ assets放在.slugignore中,它们不会使用摘要编译,并且对资产的引用没有指纹,因此不起作用。

编辑.slugignore不能在那里工作,因为排除文件在Heroku上的所有编译步骤之前开始。 但是我们需要编译所有这些,将它们移动到S3,然后才删除它们。

我在我的Rakefile(小脚本)中写了一些代码,它通过扩展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 

还有一件事:我使用了一个heroku-deflater gem,它会压缩所有css和js资产,所以我通过脚本删除所有.css和.js文件,但不删除.css.gz和.js.gz文件,因为铁路资产检查。

你读过这篇文章了吗? – https://devcenter.heroku.com/articles/cdn-asset-host-rails31

“同步资产”部分似乎表明资产可以在heroku上预编译,然后asset_sync gem会将它们从那里上传到你的s3存储桶(作为预编译步骤的一部分),文章没有提到使用.slugignore