我使用asset_sync预编译资产并将其上传到s3。
在应用程序生命周期中,资产来来往往,并开始堆积。目前,我的slu size大小是73mb,部分原因,我想,由于我在那里有一些高分辨率的图像,一旦我不再需要它们就被删除了。
将.app / assets / images添加到.slugignore时,图像资源将不会预编译,实际上会忽略其中的图像。因此,虽然段塞尺寸减少了大约15mb,但实际上并不是很有效。
有没有更好的方法让heroku忽略我上传到s3的资产?
答案 0 :(得分:0)
我找到的最佳解决方案是将预编译任务扩展为从slug中删除所有静态资产,因为它们是通过asset_sync上传的,不再需要了
原始答案: put /assets in .slugignore for Heroku deployments with asset_sync (S3/CDN)
这将块塞尺寸减小到约40mb(从大约90)
这是我的佣金延期
Rake::Task["assets:precompile"].enhance do
return "can't run in dev" if Rails.env.development?
puts 'my assets:precompile hook is started!'
["#{Dir.pwd}/public/", "#{Dir.pwd}/app/assets/"].each do |dir_path|
records = Dir.glob("#{dir_path}**/*")
records.each do |f|
if f =~ /.*.png$/ or
f =~ /.*.jpg$/ or
f =~ /.*.gif$/ or
f =~ /.*.gz$/ or
f =~ /.*.ico$/ or
f =~ /.*.eot$/ or
f =~ /.*.svg$/ or
f =~ /.*.woff$/ or
f =~ /.*.ttf$/ or
f =~ /.*.otf$/ or
f =~ /.*.css$/ or
f =~ /.*.js$/ or
f =~ /.*.sass$/ or
f =~ /.*.css$/ or
f =~ /.*.scss$/ or
f =~ /.*.coffee$/ or
f =~ /.*.wav$/ then
File.delete(f) if File.file?(f)
puts "removing #{f}"
end
end
puts Dir.glob("#{dir_path}**/*")
end
puts 'my assets:precompile hook is finished!'
end