rposborne/gitquickbooks

View on GitHub
lib/gitquickbooks/cache.rb

Summary

Maintainability
A
0 mins
Test Coverage
module GitQuickBooks
  ##
  # Setup Marshalling cache
  class Cache
    # attr_accesor :base_path
    def load(name)
      Marshal.load(IO.read("tmp/#{name}"))
    end

    def present?(name)
      File.file?("tmp/#{name}")
    end

    def write(name, data)
      File.open("tmp/#{name}", 'w+') do |f|
        f.write(Marshal.dump(data))
      end
    end

    def delete(name)
      File.delete("tmp/#{name}")
    end

    def fetch(name, &block)
      if !present?(name)
        @data = block.call
        write(name, @data)
        @data
      else
        puts "#{name} extracted from cache".red
        @data = GitQuickBooks::Cache.new.load(name)
      end
    end
  end
end