anchor.diff:  ----
   (defn active-users
     "List just users who are currently active."
  -  {:path-spec [:get "/active"]}
  +  {:path-spec [:get "/active"]}     ; equivalently {:route-spec [:get ["active"]]}
     [request]
     ...)
   ----
  
positive.code: The +:path-spec+ contains two values: the keyword for the verb (this may also be the value +:all+) and the path to match.
  
  == Ring Handlers and Middleware
  
  image:rook-sync.png[Rook Processing Diagram]
  
  Rook works within the Ring framework by providing middleware and request handlers, forming a processing pipeline.
  The section marked *namespace-handler*  in the diagram represents a portion of the overall pipeline constructed by
  
negative.code: 
  Ring assists with extracting information from the request and provides it as arguments to the invoked resource handler function.
  
  TIP: To avoid confusion, Rook uses the term _parameters_ to refer to route, query and form parameters that are part of an HTTP request; it uses
  _arguments_ to refer to function arguments (which are often called parameters, as well).
  
  Ring uses the name of the argument together with metadata attached to
  the argument symbol or to the Var holding the handler itself to
  identify the value to provide.
  
  If the argument symbol is tagged with +{:header true}+, Rook will
  supply the value taken from the header matching the argument name (due
  to the way Ring works, the match is case-insensitive; +^:header
  content-type+ matches a +Content-Type+ header), and similarly for
  +:param+ (non-route request parameters), +:request+ (the entire Ring
  request map) and +:request-key+ (a top-level key in the Ring request
  map).
  
  Alternatively, if the handler function's metadata includes a
  +:resolvers+ key holding a map of argument symbol to argument resolver
  function, the resolver specified in the map will be used (the keyword
  tags mentioned above can be used in the map as shorthand for the
  standard resolvers).
  
  Route parameters are matched by name and should not be tagged.
  
  Arguments that do not match route parameters by name and which do not
  have resolvers assigned to them through tags or the +:resolvers+ map
  will be resolved at request processing time using a more dynamic
  approach.
  
  Dynamic resolution makes use of argument resolvers taken from the
  handler function's metadata (at the +:arg-resolvers+ key) and the
  namespace's metadata (in absence of +:arg-resolvers+ metadata on the
  function); additional argument resolvers can be added by middleware --
  +(update-in request [:rook :resolvers] conj ...)+.
  
  It is assumed that standard http://ring-clojure.github.io/ring/ring.middleware.keyword-params.html[Ring middleware] is in place to
  convert the +:params+ map from string keys to keyword keys.
  
  Function {api}/io.aviso.rook.html#var-wrap-with-default-arg-resolvers[+wrap-with-default-arg-resolvers+]
  provides a default set of argument resolvers:
  