Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Waves
- module Layers
- class FileCache < Waves::Cache
- def initialize(dir)
- @directory = dir
- super
- end
- def store(key, value, ttl = {})
- super(key, value, ttl)
- key_file = @directory / key
- file = File.new(key_file,'w') unless File.exists?(key_file)
- Marshal.dump(@cache[key], file)
- file.close
- end
- def delete(*keys)
- keys.each {|key| File.delete(@directory / key) }
- super keys
- end
- def clear
- @cache.each_key {|key| File.delete(@directory / key) }
- super
- end
- def fetch(key)
- raise "No cache found for #{key}" unless File.exists?(@directory / key)
- @cache[key] = Marshal.load(@directory / key)
- if (@cache[key][:expires] > Time.now) or (@cache[key][:expires].nil?)
- @cache[key][:value]
- else
- @cache[key][:value]
- delete(key)
- end
- end
- end
- end
- end
Add Comment
Please, Sign In to add comment