Sha256: a75b9932f9f7e175d4c4e62b509e2bd682245b6655f2630f776dd5cb9254e438

Contents?: true

Size: 996 Bytes

Versions: 4

Compression:

Stored size: 996 Bytes

Contents

module Innate
  class Cache

    # Used by caches that serialize their contents to the filesystem.
    module FileBased
      attr_reader :filename

      def cache_setup(*args)
        @prefix = args.compact.join('-')

        @dir = File.join(Dir.tmpdir, self.class::DIR)
        FileUtils.mkdir_p(@dir)

        @filename = File.join(@dir, @prefix + self.class::EXT)
        @store = self.class::STORE.new(@filename)
      end

      def cache_clear
        FileUtils.mkdir_p(@dir)
        FileUtils.rm_f(@filename)
        @store = self.class::STORE.new(@filename)
      end

      def cache_store(*args)
        super{|key, value| transaction{|store| store[key] = value } }
      end

      def cache_fetch(*args)
        super{|key| transaction{|store| store[key] } }
      end

      def cache_delete(*args)
        super{|key| transaction{|store| store.delete(key) } }
      end

      def transaction(&block)
        Innate.sync{ @store.transaction(&block) }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
manveru-innate-2009.04.18 lib/innate/cache/file_based.rb
manveru-innate-2009.04 lib/innate/cache/file_based.rb
innate-2009.04 lib/innate/cache/file_based.rb
innate-2009.04.12 lib/innate/cache/file_based.rb