Sha256: c1da512244e0d112e406990bb51ae59d6367ca621bb38e06dd1dd77c9b909d91

Contents?: true

Size: 954 Bytes

Versions: 6

Compression:

Stored size: 954 Bytes

Contents

require 'caches/synchronized'

module Waves
  module Caches

    class File < Simple

      def initialize( args )
        raise ArgumentError, ":directory is nil" if args[ :directory ].nil?
        @directory = args[ :directory ] ; @keys = []
      end

      def store( key, value )            
        @keys << key
        ::File.open( @directory / key, 'w') { |f| Marshal.dump( value, f ) }
      end

      def delete( key )
        if @keys.include? key
          ::File.delete( @directory / key )
          @keys.delete( key )
        end
      end

      def clear
        @keys.each { |key| delete( key ) }
      end

      def fetch( key )
        Marshal.load( ::File.read( @directory / key ) ) if @keys.include?( key )
      rescue ArgumentError
        nil
      end
      
    end
    
    class SynchronizedFile < Synchronized
      
      def initialize( args )
        super( File.new( args ) )
      end
      
    end
    
  end
end


Version data entries

6 entries across 6 versions & 4 rubygems

Version Path
dyoder-waves-0.8.0 lib/caches/file.rb
waves-edge-2009.03.10.13.14 lib/caches/file.rb
waves-stable-2009.3.10 lib/caches/file.rb
waves-0.8.1 lib/caches/file.rb
waves-0.8.2 lib/caches/file.rb
waves-0.8.0 lib/caches/file.rb