module Sinatra::AssetPack::BusterHelpers

Public Instance Methods

add_cache_buster(path, *files) click to toggle source

Adds a cache buster for the given path.

The 2nd parameter (and beyond) are the files to take mtime from. If the files are not found, the paths will be left as they are.

add_cache_buster('/images/email.png', '/var/www/x/public/images/email.png')
# File lib/sinatra/assetpack/buster_helpers.rb, line 27
def add_cache_buster(path, *files)
  hash = cache_buster_hash *files

  if hash
    path.gsub(/(\.[^.]+)$/) { |ext| ".#{hash}#{ext}" }
  else
    path
  end
end
cache_buster_hash(*files) click to toggle source

Returns the MD5 for all of the files concatenated together

# File lib/sinatra/assetpack/buster_helpers.rb, line 6
def cache_buster_hash(*files)
  content = files.sort.map do |f|
    Digest::MD5.file(f).hexdigest if f.is_a?(String) && File.file?(f)
  end.compact
  Digest::MD5.hexdigest(content.join) if content.any?
end
mtime_for(files) click to toggle source

Returns the maximum mtime for a given list of files. It will return nil if none of them are found.

# File lib/sinatra/assetpack/buster_helpers.rb, line 15
def mtime_for(files)
  time = files.map { |f| File.mtime(f).to_i if f.is_a?(String) && File.file?(f) }.compact.max
  Time.at(time) if time
end