Module: RackPipeline::Caching
- Included in:
- Base
- Defined in:
- lib/rack-pipeline/caching.rb
Instance Method Summary collapse
- #cache_target(source, target) ⇒ Object
- #calculate_hash(sources) ⇒ Object
- #cleanup_cache(target) ⇒ Object
- #create_temp_directory ⇒ Object
Instance Method Details
#cache_target(source, target) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/rack-pipeline/caching.rb', line 6 def cache_target( source, target ) target_path = File.join( settings[:temp], "#{File.basename(target)}.#{calculate_hash(source)}#{File.extname(target)}" ) if File.file?(target_path) target_path else cleanup_cache(target) yield target_path end end |
#calculate_hash(sources) ⇒ Object
31 32 33 |
# File 'lib/rack-pipeline/caching.rb', line 31 def calculate_hash( sources ) Digest::MD5.hexdigest(Array(sources).inject(''){ |all,(file,_)| all << "#{file}:#{File.mtime(file)}" }) end |
#cleanup_cache(target) ⇒ Object
27 28 29 |
# File 'lib/rack-pipeline/caching.rb', line 27 def cleanup_cache( target ) FileUtils.rm Dir.glob( File.join( settings[:temp], File.basename(target) ) + '.*' ) end |
#create_temp_directory ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rack-pipeline/caching.rb', line 16 def create_temp_directory temp = if settings[:temp] settings[:temp] else require 'tmpdir' File.join( Dir.tmpdir, 'RackPipeline' ) end FileUtils.mkdir_p temp settings[:temp] = temp end |