截至2015年4月14日,看起来.gz
文件编译已从最新版本的Rails中的链接中删除。
https://github.com/rails/sprockets/issues/26
我在S3服务器上使用这些文件来加速页面加载,但由于gzip文件的编译已经被上述线程删除了,因此我脑海中浮现出一个大问题。如果您使用的是资产主机,那么编译.gz
文件的新解决方案是什么?如果我从我的服务器提供文件,这将相对容易,但静态资产托管在其他地方,需要预编译。
无论如何,希望有人想出这个。我的临时解决方案,如果我无法获得资产管道来生成和上传.gz
文件就像使用grunt-contrib-compress(https://github.com/gruntjs/grunt-contrib-compress)手动创建它们一样。但是我们都知道手动解决方案不能很好地扩展,我宁愿让资产管道在部署时处理这个问题。
非常感谢你的帮助。 :)
答案 0 :(得分:1)
由于Rake不会覆盖但链接任务,您可以声明另一个assets:precompile
。以下解决方案应该可以在不更改任何部署脚本的情况下运行:
#/lib/tasks/assets.rake
namespace :assets do
# We make use of rake's behaviour and chain this after rails' assets:precompile.
desc 'Gzip assets after rails has finished precompilation'
task :precompile do
Dir['public/assets/**/*.{js,css}'].each do |path|
gz_path = "#{path}.gz"
next if File.exist?(gz_path)
Zlib::GzipWriter.open(gz_path) do |gz|
gz.mtime = File.mtime(path)
gz.orig_name = path
gz.write(IO.binread(path))
end
end
end
end