How are you building Erlang applications?
If you’re building web apps do you use any web frameworks? If so which ones? If not, why not and what do you use instead?
Are there any libraries or tools you always turn to?
Is there a specific way in which you architecture your apps?
I think a lot of people will be interested in this thread - me included!
I recently started a new Erlang project at my work. Here are some salient points from the tooling perspective:
- Used rebar3
- Structure as multi-app project (Multi-App Projects | Adopting Erlang)
- Introduce code formatting from the start (GitHub - WhatsApp/erlfmt: An automated code formatter for Erlang)
- Logger with flatlog for logging.
- CT for testing (with eunit assert macros for better failure messages)
docker-compose ct hook for running external services for some end-to-end tests.
- Different release definitions in the top level rebar.config to support releasing a subset of apps in a release.
sys_config_src feature of relx to be able to take some configuration from environment variables.
- Release multi-platform docker images (modified version what’s described here: Docker | Adopting Erlang)
- Integrate with Jenkins (cth_surefire, covertool)
Will add to the list if I remember something else.
Interesting idea, I’ve not tried that.
Note the asserts are in
-include_lib("stdlib/include/assert.hrl")., since this was so common