Sha256: 7dee20fdd3385484bf1eba30abcb80a4acbbbc3920c6c9a40bab90e022df6adb

Contents?: true

Size: 967 Bytes

Versions: 6

Compression:

Stored size: 967 Bytes

Contents

module Innate
  class Cache

    # Used by caches that serialize their contents to the filesystem.
    module FileBased
      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

6 entries across 6 versions & 1 rubygems

Version Path
manveru-innate-2009.02.06 lib/innate/cache/file_based.rb
manveru-innate-2009.02.21 lib/innate/cache/file_based.rb
manveru-innate-2009.02.25 lib/innate/cache/file_based.rb
manveru-innate-2009.03.24 lib/innate/cache/file_based.rb
manveru-innate-2009.04.01 lib/innate/cache/file_based.rb
manveru-innate-2009.04.08 lib/innate/cache/file_based.rb