Sha256: ed7a69d54e003095b5d729c5db0a15132dd0ee76e0e7434c0592fa0852bdc151

Contents?: true

Size: 686 Bytes

Versions: 3

Compression:

Stored size: 686 Bytes

Contents

module Coltrane
  class Cache
    class << self
      def find_or_record(key, &block)
        if (cached = fetch(key))
          return cached
        else
          cached = yield block
          record(key, cached)
          cached
        end
      end

      private

      def dir
        dir = File.expand_path('../../../', __FILE__) + "/cache/"
        Dir.mkdir(dir) unless Dir.exist?(dir)
        dir
      end

      def fetch(key)
        return unless File.file?(dir+key)
        Marshal.load File.read(dir+key)
      end

      def record(key, contents)
        File.open(dir+key, "w") do |f|
          f.write Marshal.dump(contents)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
coltrane-1.0.11 lib/coltrane/cache.rb
coltrane-1.0.1 lib/coltrane/cache.rb
coltrane-1.0.0 lib/coltrane/cache.rb