What's the difference from Caveman "1"?

The reason I wrote it from scratch

One of the most frequently asked questions was "Which should I use ningle or Caveman? What are the differences?" I think it was because the roles of them were too similar. Both of them are saying "micro" and no database support.

Caveman2 is no more "micro" web application framework. It supports CL-DBI and has database connection management by default. Caveman has started growing up.

Design Goal

Caveman is intended to be a collection of common parts of web applications. Caveman has 3 rules to make decisions.

Be extensible.

Be practical.

Don't force anything.

Quickstart

You came here because you're interested in living like a caveman, right? There's no Disneyland, but it's good place to start. Let's get into a cave.

Normally, routes are matched in the order they are defined. Only the first route matched is invoked and rest of them just will be ignored. But, a route can punt processing to the next matching route using next-route.

The connection is alive during the Lisp session and will be reused in each HTTP requests.

retrieve-all and the query language came from datafly and SxQL. See those documentations for more informations.

Set HTTP headers or HTTP status

There are several special variables available during a HTTP request. *request* and *response* represents a request and a response. If you are familiar with Clack, these are instances of subclasses of Clack.Request and Clack.Response.