Sha256: 5af33c093d646ed4a16c2d135b2d337b40b84a9431ef046c4c29758d4930bbfd

Contents?: true

Size: 1.64 KB

Versions: 2

Compression:

Stored size: 1.64 KB

Contents

class Middleman::Features::CacheBuster
  def initialize(app)
    Middleman::Assets.register :cache_buster do |path, prefix, request|
      http_path = Middleman::Assets.before(:cache_buster, path, prefix, request)

      if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
        http_path
      else
        begin
          prefix = Middleman::Base.images_dir if prefix == Middleman::Base.http_images_path
        rescue
        end

        real_path_static  = File.join(Middleman::Base.public, prefix, path)

        if File.readable?(real_path_static)
          http_path << "?" + File.mtime(real_path_static).strftime("%s") 
        elsif Middleman::Base.environment == "build"
          real_path_dynamic = File.join(Middleman::Base.root, Middleman::Base.build_dir, prefix, path)
          http_path << "?" + File.mtime(real_path_dynamic).strftime("%s") if File.readable?(real_path_dynamic)
        end

        http_path
      end
    end
    
    Middleman::Base.after_feature_init do 
      ::Compass.configuration do |config|
        config.asset_cache_buster do |path, real_path|
          real_path = real_path.path if real_path.is_a? File
          real_path = real_path.gsub(File.join(Middleman::Base.root, Middleman::Base.build_dir), Middleman::Base.public)
          if File.readable?(real_path)
            File.mtime(real_path).strftime("%s") 
          else
            $stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}"
          end
        end
      end
    end
  end
end

Middleman::Features.register :cache_buster, Middleman::Features::CacheBuster

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
middleman-0.99.0.pre lib/middleman/features/cache_buster.rb
middleman-0.9.0.pre lib/middleman/features/cache_buster.rb