Sha256: 7c2c83a346e474d7dfad135c3d60c8488c73273bf222414bc646f487a044c67b

Contents?: true

Size: 791 Bytes

Versions: 3

Compression:

Stored size: 791 Bytes

Contents

# frozen_string_literal: true

module Coltrane
  # A simple caching based on serializing objects into files
  # maybe this should changed to save in a single json file
  class Cache
    class << self
      def find_or_record(key, &block)
        unless (cached = fetch(key))
          cached = yield block
          record(key, cached)
        end
        cached
      end

      private

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

      def fetch(key)
        Marshal.load File.read(dir + key) if File.file?(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.21 lib/coltrane/cache.rb
coltrane-1.0.20 lib/coltrane/cache.rb
coltrane-1.0.2 lib/coltrane/cache.rb