Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A template/tutorial project for running ChicagoBoss (Erlang MVC web framework) on Heroku (PaaS hosting platform)
tree: 07512f90c9

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
ChicagoBoss @ 16603b5
ebin
myapp
.gitmodules
Gemfile
Gemfile.lock
Procfile
README.md
cb-heroku.iml
run.sh

README.md

Running ChicagoBoss (erlang web framework) on Heroku

N.B. This process was an initial attempt and is subject to change :)

To create a new project from scratch:

  1. Create a top level project directory. Add an empty ebin/ directory. (N.B. also create a dummy file to commit to git)
  2. Create a new heroku instance:

    git init heroku create --stack cedar heroku config:add BUILDPACK_URL=http://github.com/heroku/heroku-buildpack-erlang.git

  3. Add ChicagoBoss as git submodule (also repeat for cb_admin if required)

    git submodule add https://github.com/evanmiller/ChicagoBoss.git ChicagoBoss

  4. Create app

    cd ChicagoBoss; make; make app PROJECT=myapp

  5. Add Procfile, run.sh from this project - edit project name in run.sh

  6. Edit myapp/init.sh - add the following sections: (running erl with the -sname param causes heroku startup to fail) ''' 'start-standalone') # Start Boss in production mode with no -sname parameter echo "starting boss in production mode..." START=$(./rebar boss c=start_cmd|grep -v "==>"|perl -pe 's/-sname\s+\S+//') $START ;;

    'start-dev-standalone') # Start Boss in development mode START_DEV=$(./rebar boss c=start_dev_cmd|grep -v "==>"|perl -pe 's/-sname\s+\S+//') $START_DEV ;; '''

  7. Edit myapp/boss.config

    • change boss path line to:

    {path, "../ChicagoBoss"},

    • change port line to:

    {port, {env, "PORT"}},

    • N.B. above currently requires ChicagoBoss HEAD to work
  8. Deploy!

    git add .; git push heroku master

A few caveats:

  • This is based on using the heroku supplied erlang buildpack at: https://github.com/heroku/heroku-buildpack-erlang
  • A better solution would be to modify the buildpack to build CB at the compile stage (as opposed to the run stage)
  • As such, the above solution may crash at the first deploy due to the app not starting within 60secs. Run:

    heroku logs -t

    in a seperate window to keep an eye on the deployment/startup process.

Heroku specific stuff: (if you are not familiar with using Heroku)

heroku info

...will display info about the current project (app url, git url etc)

Something went wrong with that request. Please try again.