- Easy configuration with
elixir_buildpack.config
file - Use prebuilt Elixir binaries
- Adds the free Heroku Postgres database upon app creation
DATABASE_URL
can be made available at compile time adding it toconfig_vars_to_export
inelixir_buildpack.config
- Allows configuring Erlang
- If your app doesn't have a Procfile, default web task
mix server -p $PORT
will be run. - Consolidates protocols
- Hex and rebar support
- Caching of Hex packages, Mix dependencies and downloads
- Erlang - Prebuilt packages (17.5, 17.4, etc)
- Elixir - Prebuilt releases (1.0.4, 1.0.3, etc) or prebuilt branches (master, stable, etc)
heroku create --buildpack "https://github.com/HashNuke/heroku-buildpack-elixir.git"
heroku config:set BUILDPACK_URL="https://github.com/HashNuke/heroku-buildpack-elixir.git"
Create a elixir_buildpack.config
file in your app's root dir. The file's syntax is bash.
If you don't specify a config option, then the default option from the buildpack's elixir_buildpack.config
file will be used.
Here's a full config file with all available options:
# Erlang version
erlang_version=17.5
# Elixir version
elixir_version=1.0.4
# Always rebuild from scratch on every deploy?
always_rebuild=false
# Export heroku config vars
config_vars_to_export=(DATABASE_URL)
- Use prebuilt Elixir release
elixir_version=1.0.4
- Use prebuilt Elixir branch, the branch specifier ensures that it will be downloaded every time
elixir_version=(branch master)
- You can specify an Erlang release version like below
erlang_version=17.5
- To set a config var on your heroku node you can exec from the shell:
heroku config:set MY_VAR=the_value
- Add the config vars you want to be exported in your
elixir_buildpack.config
file:
config_vars_to_export=(DATABASE_URL MY_VAR)
-
Add your own
Procfile
to your application, else the default web taskmix run --no-halt
will be used. -
If you create an application with this buildpack, then a free database addon
heroku-postgresql:hobby-dev
is also added. The database credentials are available from the env varDATABASE_URL
. -
Your application should build embedded and start permanent. Build embedded will consolidate protocols for a performance boost, start permanent will ensure that Heroku restarts your application if it crashes. See below for an example of how to use these features in your Mix project:
defmodule MyApp.Mixfile do
use Mix.Project
def project do
[app: :my_app,
version: "0.0.1",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod]
end
end
© Akash Manohar under The MIT License. Feel free to do whatever you want with it.