Sha256: f0e89e15d4261a0dbf67f1567ed2cd974a30f63086081682400e24d73b4240ad
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require 'fileutils' require 'tmpdir' module Glue # TODO: safe locking of files, because Nitro can be multiprocess class FileCache setting :basedir, :default => "#{Dir.tmpdir}/nitro_file_cache", :doc => 'The directory to store files' def initialize(name, keepalive = nil) @path = File.join(FileCache.basedir, name) @keepalive = keepalive FileUtils.mkdir_p(@path, :mode => 0700) end def []=(k,v) fn = File.join(@path, k.to_s) encode_file(fn, v) end def [](k) fn = File.join(@path, k.to_s) return nil unless File.exists?(fn) decode_file(fn) end def gc! return unless @keepalive now = Time.now all.each do |fn| expire_time = File.stat(fn).atime + @keepalive File.delete(fn) if now > expire_time end end def all Dir.glob( File.join(@path, '*' ) ) end private def decode_file(fn) Marshal.load( File.read(fn) ) end def encode_file(fn, value) File.open(fn, "w") do |f| f.chmod(0600) f.write(Marshal.dump(value)) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
glue-0.28.0 | lib/glue/cache/file.rb |