Guest User

Untitled

a guest
Feb 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. module Waves
  2.  
  3. module Layers
  4.  
  5. class FileCache < Waves::Cache
  6.  
  7. def initialize(dir)
  8. @directory = dir
  9. super
  10. end
  11.  
  12. def store(key, value, ttl = {})
  13. super(key, value, ttl)
  14.  
  15. key_file = @directory / key
  16.  
  17. file = File.new(key_file,'w') unless File.exists?(key_file)
  18. Marshal.dump(@cache[key], file)
  19. file.close
  20. end
  21.  
  22. def delete(*keys)
  23. keys.each {|key| File.delete(@directory / key) }
  24. super keys
  25. end
  26.  
  27. def clear
  28. @cache.each_key {|key| File.delete(@directory / key) }
  29. super
  30. end
  31.  
  32. def fetch(key)
  33. raise "No cache found for #{key}" unless File.exists?(@directory / key)
  34. @cache[key] = Marshal.load(@directory / key)
  35.  
  36. if (@cache[key][:expires] > Time.now) or (@cache[key][:expires].nil?)
  37. @cache[key][:value]
  38. else
  39. @cache[key][:value]
  40. delete(key)
  41. end
  42. end
  43.  
  44. end
  45.  
  46. end
  47.  
  48. end
Add Comment
Please, Sign In to add comment