Module: Sinatra::AssetPack::BusterHelpers

Extended by:
BusterHelpers
Included in:
BusterHelpers, Package
Defined in:
lib/sinatra/assetpack/buster_helpers.rb

Instance Method Summary collapse

Instance Method Details

#add_cache_buster(path, *files) ⇒ Object

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')


27
28
29
30
31
32
33
34
35
# 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) ⇒ Object

Returns the MD5 for all of the files concatenated together



6
7
8
9
10
11
# 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) ⇒ Object

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



15
16
17
18
# 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