def get_cache(name, key)
      cache = instance_variable_get("@#{name}_map")
      value = cache[key]
      if value.nil? && block_given?
        set_cache(name, key, value = yield)
      end
      value == :_nil ? nil : value
    end
def get_cache(name, key)
      cache = instance_variable_get("@#{name}_map")
      value = cache[key]
      if value.nil? && block_given?
        set_cache(name, key, value = yield)
      end
      value == :_nil ? nil : value
    end
Attempts to get the given data from a cache.  If it doesn't exist, it'll
 pass the results of the yielded block to the cache for future accesses.

 name - The cache prefix used in building the full cache key.
 key  - The unique cache key suffix, usually a String Git SHA.

 Yields a block to pass to the cache.
 Returns the cached result.