Class: FsCache
- Inherits:
-
Object
- Object
- FsCache
- Defined in:
- lib/fscache.rb
Constant Summary collapse
- VERSION =
"0.9.0"
Instance Method Summary collapse
- #clear ⇒ Object
- #exist?(cache_name) ⇒ Boolean
- #fetch(cache_name) ⇒ Object
-
#initialize(path = nil, expire = 7, debug = false) ⇒ FsCache
constructor
A new instance of FsCache.
- #read(cache_name) ⇒ Object
- #write(cache_name, cache_value) ⇒ Object
Constructor Details
#initialize(path = nil, expire = 7, debug = false) ⇒ FsCache
Returns a new instance of FsCache.
10 11 12 13 14 15 16 |
# File 'lib/fscache.rb', line 10 def initialize(path = nil, expire = 7, debug = false) @file_cache_expire = expire @debug = debug default_tmp = defined?(Rails).nil? ? Pathname.new("/tmp").join('file_cache') : Rails.root.join('tmp').join('file_cache') @file_cache_dir = path.nil? ? default_tmp : path FileUtils::mkdir_p @file_cache_dir if !File.directory?(@file_cache_dir) end |
Instance Method Details
#clear ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/fscache.rb', line 66 def clear Dir["#{@file_cache_dir}/*"].each do |cache_name| # lets make sure we're only deleting files with md5 hashes as filenames. if cache_key( File.basename(cache_name) ) FileUtils.rm(cache_name) end end end |
#exist?(cache_name) ⇒ Boolean
20 21 22 23 24 25 |
# File 'lib/fscache.rb', line 20 def exist?(cache_name) cache_name = cache_key( cache_name ) cache_path = @file_cache_dir.join(cache_name) cache_valid(cache_path) end |
#fetch(cache_name) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fscache.rb', line 54 def fetch(cache_name) cache_name = cache_key( cache_name ) if(exist? (cache_name) ) read (cache_name) else value = yield write(cache_name, value) read (cache_name) end end |
#read(cache_name) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/fscache.rb', line 28 def read(cache_name) cache_name = cache_key( cache_name ) cache_path = @file_cache_dir.join(cache_name) if @debug p exist?(cache_name) ? "#{cache_name}: cache hit" : "#{cache_name}: cache miss" end if File.exist?(cache_path) YAML.load(File.read(cache_path)) else return false end end |
#write(cache_name, cache_value) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/fscache.rb', line 44 def write(cache_name, cache_value) cache_name = cache_key( cache_name ) cache_path = @file_cache_dir.join(cache_name) File.open(cache_path, 'w') do |f| f.write(YAML.dump(cache_value)) end end |