Module: Sinatra::AssetPack::BusterHelpers
- Extended by:
- BusterHelpers
- Included in:
- BusterHelpers, Package
- Defined in:
- lib/sinatra/assetpack/buster_helpers.rb
Instance Method Summary collapse
-
#add_cache_buster(path, *files) ⇒ Object
Adds a cache buster for the given path.
-
#cache_buster_hash(*files) ⇒ Object
Returns the MD5 for all of the files concatenated together.
-
#mtime_for(files) ⇒ Object
Returns the maximum mtime for a given list of files.
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 |