Serf: A standalone Fanstatic WSGI application

During development of Javascript code it can be useful to test your Javascript code in a very simple HTML page. Fanstatic contains a very simple WSGI application that allows you to do this: Serf.

The Serf class is a WSGI application that serves a very simple HTML page with a <head> and <body> section. You can give the Serf class a single resource to include. If you wrap the Serf WSGI application in a Fanstatic WSGI framework component, the resource and all its dependencies will be included on the web page.

Paste Deployment of Serf

Serf is mostly useful in combination with Paste Deployment, as this makes it very easy to configure a little test web application. You configure Fanstatic as discussed in the our Paste Deploy documentation section. You then add a serf app in a app: section and tell it what resource to include using the py:<dotted_name> notation.

A dotted name is a string that refers to a Python object. It consists of a packages, modules and objects joined together by dots, much as you can write them in Python import statements. js.jquery.jquery for instance refers to the jquery resource in the js.jquery package. This way you can refer to any package on your Python path (controlled by buildout or virtualenv).

Finally, you also must include the Serf application in the WSGI pipeline.

Here is a full example which includes the jquery resource on a HTML page:

[server:main]
use = egg:Paste#http

[app:serf]
use = egg:fanstatic#serf
resource = py:js.jquery.jquery

[filter:fanstatic]
use = egg:fanstatic#fanstatic

[pipeline:main]
pipeline = fanstatic serf