A Heroku web app using Compojure.
This generated project has a few basics set up beyond the bare Compojure defaults:
- Cookie-backed session store
- Stack traces when in development
- Environment-based config via enviorn
- HTTP-based REPL debugging via drawbridge
To start a local web server for development you can either eval the
commented out forms at the bottom of web.clj
from your editor or
launch from the command line:
$ lein run -m regarde.web
Initialize a git repository for your project.
$ git init
$ git add .
$ git commit -m "Initial commit."
You'll need the heroku toolbelt installed to manage the heroku side of your app. Once it's installed, get the app created:
$ heroku apps:create regarde
Creating regarde... done, stack is cedar
http://regarde.herokuapp.com/ | [email protected]:regarde.git
Git remote heroku added
You can deploy the skeleton project immediately:
$ git push heroku master
Writing objects: 100% (13/13), 2.87 KiB, done.
Total 13 (delta 0), reused 0 (delta 0)
-----> Heroku receiving push
-----> Clojure app detected
-----> Installing Leiningen
Downloading: leiningen-2.0.0-preview7-standalone.jar
[...]
-----> Launching... done, v3
http://regarde.herokuapp.com deployed to Heroku
To [email protected]:regarde.git
* [new branch] master -> master
It's live! Hit it with curl
:
$ curl http://regarde.herokuap.com
["Hello" :from Heroku]
The cookie-backed session store needs a session secret configured for encryption:
$ heroku config:add SESSION_SECRET=$RANDOM_16_CHARS
The devcenter article
has a detailed explanation, but using the repl
task from Leiningen
2.x lets you connect a REPL to a remote process over HTTP. The first
step is setting up credentials:
$ heroku config:add REPL_USER=[...] REPL_PASSWORD=[...]
Then you can launch the REPL:
$ lein repl :connect http://$REPL_USER:[email protected]/repl
Everything you enter will be evaluated remotely in the running dyno, which can be very useful for debugging or inspecting live data.
- Make sure your
~/.lein/profiles.clj
file contains the following keys:
{:user {:env {:session-secret "random-string"
:google-client-id "client-id"
:google-client-secret "client-secret"
:oauth-callback-url "http://localhost:3000/oauth2callback"
:database-name "some-custom-database-name"
:database-user "johnsmith"
:database-password "foo"
:database-host "example.com"}}}
- Check the database configuration in
src/regarde/db.clj
Copyright © 2013 FIXME
Distributed under the Eclipse Public License, the same as Clojure.