A Buildpack that allows you to deploy Common Lisp applications on the Heroku infrastructure.
Original work by Mike Travers, [email protected] and was improved by José Pereira, [email protected].
This builds a binary image of your applicaiton which will be run to start your application.Your
app should include a file by the name heroku-setup.lisp. It is be reponsible for loading
your application. But, do note that your server should not be started during loading of this file.
The binary invokes heroku-toplevel (of cl-user package) on startup, for which a default
implementation has been provided. This function is expected to start your server and should not
return. You should redefine the function to suite your needs.
- User rosewell to install sbcl/ccl.
Was inspire from https://github.com/Rudolph-Miller/heroku-buildpack-clack
- Support for SBCL and Hunchentoot.
Example app at https://github.com/jsmpereira/heroku-cl-example
- Implementation choice via env variables.
You need this first: http://devcenter.heroku.com/articles/labs-user-env-compile. It will allow the config vars to be present at build time.
Then you can do
heroku config:add CL_IMPL=sbclorheroku config:add CL_IMPL=ccl
- Web server choice
heroku config:add CL_WEBSERVER=hunchentootorheroku config:add CL_WEBSERVER=aserve
-
To avoid trouble with SBCL source encoding use:
heroku config:add LANG=en_US.UTF-8 -
Hunchentoot working with SBCL and CCL. AllegroServe working with CCL. There's however an issue with AllegroServe in SBCL. acl-compat bundled in https://github.com/mtravers/portableaserve seems to be using some SBCL deprecated sb-thread functions.
José Santos, [email protected]
######I've kept the original readme for reference.
- Working to first approximation.
- For a minimal example of use, see the example application.
- For a more complex example, see the WuWei demo site and source.
- The scripts bin/test-compile and bin/test-run simulate as far as possible the Heroku build and run environments on your local machine.
- Heroku does not have a persistent file system. Applications should use S3 for storage; ZS3 is a useful CL library for doing that.
- parameterizing/forking for other Lisp implementations and web servers (see Github forks)
- support for Heroku's database infrastructure (DONE -- see the example application).
- Heroku and their new Buildpack-capable stack
- QuickLisp library manager
- OpenMCL aka Clozure CL
- Portable AllegroServe
Mike Travers, [email protected]