Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

here are my changes, if you want them #2

merged 5 commits into from Aug 17, 2012
@@ -1,13 +1,20 @@
# Heroku buildpack: Emacs Lisp
-This is an Emacs Lisp Heroku buildpack. It is probably only useful
-with [Elnode](http://www.emacswiki.org/emacs/Elnode).
+This is an Emacs Lisp Heroku buildpack for Elnode.
+First make sure you have at LEAST heroku gem version 2.11.0+
## Usage
+Make a git repository with a file start-elnode.el:
-;;; init.el
-(require 'elnode (concat load-file-name "elnode.el"))
+;;; start-elnode.el
+(setq package-archives '(("marmalade" . "http://marmalade-repo.org/packages/")))
+(package-install 'elnode)
(defun handler (httpcon)
"Demonstration function"
@@ -16,34 +23,38 @@ with [Elnode](http://www.emacswiki.org/emacs/Elnode).
`("Server" . ,(concat "GNU Emacs " emacs-version)))
(elnode-http-return httpcon "<html><body><h1>Hello from Emacs!</h1></body></html>"))
-(elnode-start 'handler (string-to-number (or (getenv "PORT") "8080")) "")
+ 'handler
+ :port (string-to-number (or (getenv "PORT") "8080"))
+ :host "")
(while t (accept-process-output nil 1))
- # requires heroku gem version 2.11.0+
- $ heroku create --stack cedar --buildpack http://github.com/technomancy/heroku-buildpack-emacs.git
+add heroku as a remote to the repo:
+ $ heroku create --stack cedar --buildpack http://github.com/nicferrier/heroku-buildpack-emacs.git
+and then deploy the app by pushing to heroku:
$ git push heroku master
-----> Heroku receiving push
-----> Fetching custom buildpack
-----> Emacs Lisp app detected
-----> Downloading Emacs
- Downloading Emacs 24 pretest from http://p.hagelb.org/emacs.tar.gz...
+ Downloading Emacs 24 pretest from github
-The buildpack will detect that your app has an `init.el` in the root
+The buildpack will detect that your app has a `start-elnode.el` in the root
and download a copy of the Emacs 24 pretest to bundle in your slug.
The Procfile for Emacs Lisp apps currently needs to untar that copy of
Emacs before running and symlink it to /tmp/emacs, like this:
- web: tar xzf emacs.tar.gz && ln -s $PWD/emacs /tmp/emacs; emacs/bin/emacs --daemon --load init.el
+ web: tar xzf emacs.tar.gz && ln -s $PWD/emacs /tmp/emacs; emacs/bin/emacs --daemon --load start-elnode.el
-This is obviously undesired since it means other users could interfere
-with this symlink, so a way to compile Emacs without referring to the
-/tmp directory needs to be discovered. Until then, don't use this
-buildpack for anything you would need to keep secure.
+## Re-compiling the buildpack Emacs
The current Emacs tarball is compiled from the pretest of version 24
with this invocation:
@@ -7,6 +7,6 @@ indent() {
echo "-----> Found an init.el file."
# TODO: cache this
-echo "Downloading Emacs 24 pretest from http://p.hagelb.org/emacs.tar.gz..." | indent
-curl -s -o $1/emacs.tar.gz http://p.hagelb.org/emacs.tar.gz
+echo "Downloading Emacs 24 pretest from github..." | indent
+curl -L -s -o $1/emacs.tar.gz https://github.com/downloads/nicferrier/heroku-buildpack-emacs/static-emacs.tar.gz
echo "...done" | indent
@@ -1,6 +1,6 @@
-if [ -f $1/init.el ]; then
+if [ -f $1/start-elnode.el ]; then
echo "Emacs Lisp"
exit 0