missing gzip version of css and js assets

前端 未结 3 1737
忘了有多久
忘了有多久 2020-12-17 23:59

I\'m using Rails 4.2 for a quite simple project. When I run rake assets:precompile (for development as well as production environments) I get an applicati

3条回答
  •  盖世英雄少女心
    2020-12-18 00:17

    I prefer

    namespace :assets do
      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["#{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
    
      # Hook into existing assets:precompile task
      Rake::Task["assets:precompile"].enhance do
        Rake::Task["assets:gzip"].invoke
      end
    end
    

    Source

提交回复
热议问题