Sha256: 98fcd20b4f98a641db1d16cf3e21537a1c6cbc3616d853168d0664f483d14b6d
Contents?: true
Size: 950 Bytes
Versions: 13
Compression:
Stored size: 950 Bytes
Contents
require 'digest/md5' require 'fileutils' require 'pathname' module Sprockets module Cache # A simple file system cache store. # # environment.cache = Sprockets::Cache::FileStore.new("tmp/sprockets") # class FileStore def initialize(root) @root = Pathname.new(root) # Ensure directory exists FileUtils.mkdir_p @root end # Lookup value in cache def [](key) pathname = path_for(key) pathname.exist? ? pathname.open('rb') { |f| Marshal.load(f) } : nil end # Save value to cache def []=(key, value) path_for(key).open('w') { |f| Marshal.dump(value, f)} value end private # Returns path for cache key. # # The key may include some funky characters so hash it into # safe hex. def path_for(key) @root.join(::Digest::MD5.hexdigest(key)) end end end end
Version data entries
13 entries across 13 versions & 2 rubygems