anchor.diff:  -module(ddoc_cache_opener).
   -behaviour(gen_server).
   
  -
   -include_lib("mem3/include/mem3.hrl").
  -
   
   -export([
       start_link/0
  
positive.code: ]).
  
  
  -define(OPENING, ddoc_cache_opening).
  
  -type dbname() :: iodata().
  
negative.code:             Fun -> [Fun]
          end
      end, DDocs),
      ok = ets_lru:insert(?CACHE, {DbName, validation_funs}, Funs),
      exit({open_ok, Key, {ok, Funs}});
  open_ddoc({DbName, DDocId}=Key) ->
      try fabric:open_doc(DbName, DDocId, [ejson_body]) of
          {ok, Doc} ->
              ok = ets_lru:insert(?CACHE, {DbName, DDocId}, Doc),
              exit({open_ok, Key, {ok, Doc}});
          Else ->
              exit({open_ok, Key, Else})
  