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).to_i}" }) 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 |