35 lines
1.1 KiB
Ruby
35 lines
1.1 KiB
Ruby
require 'pry'
|
|
namespace :assets do
|
|
task dedigest: :environment do
|
|
extensions = %w[jpg png js css gif eot svg woff2 woff ttf]
|
|
Dir.glob(Rails.root.join('public/assets/**', "*.{#{extensions.join(',')}}")).each do |asset_path|
|
|
next unless asset_path =~ /-[a-f0-9]{32,64}\.(#{extensions.join('|')})\Z/
|
|
dedigest_path = asset_path.sub(/-[a-f0-9]{32,64}/, '')
|
|
`cp '#{asset_path}' '#{dedigest_path}' 2>/dev/null`
|
|
end
|
|
end
|
|
desc "Create .gz versions of assets"
|
|
task gzip: :environment do
|
|
zip_types = /\.(?:css|html|js|otf|svg|txt|xml)$/
|
|
|
|
public_assets = File.join(Rails.root, "public", Rails.application.config.assets.prefix)
|
|
|
|
Dir.glob("#{public_assets}/**/*").each do |f|
|
|
next unless f =~ zip_types
|
|
|
|
mtime = File.mtime(f)
|
|
gz_file = "#{f}.gz"
|
|
next if File.exist?(gz_file) && File.mtime(gz_file) >= mtime
|
|
|
|
File.open(gz_file, "wb") do |dest|
|
|
gz = Zlib::GzipWriter.new(dest, Zlib::BEST_COMPRESSION)
|
|
gz.mtime = mtime.to_i
|
|
IO.copy_stream(open(f), gz)
|
|
gz.close
|
|
end
|
|
|
|
File.utime(mtime, mtime, gz_file)
|
|
end
|
|
end
|
|
end
|