GTFS Realtime Utilities > Concentrate
Combines realtime transit information from multiple sources into single output files. Maintained by Massachusetts Bay Transportation Authority (MBTA).
Concentrate
Concentrate combines realtime transit information from multiple sources into single output files.
Configuration
Concentrate can either be configured via config/config.exs or a JSON environment variable as CONCENTRATE_JSON: more details are available in configuration.md.
An example run commands bash script for configuring Concentrate is available in .envrc.example. Note that you must run apply this configuration in a bash shell by using source instead of via direnv or a
similar tool, since it runs bash commands.
Architecture
See architecture.md for the overall architecture of the system.
Development Setup
# after installing asdf from https://github.com/asdf-vm/asdf..
asdf install
# get Elixir dependencies
mix deps.get
# add pre-commit hook to verify formatting/tests/types
ln -s hooks/pre-commit .git/hooks/pre-commit
# make sure everything passes! (fastest to slowest)
mix format --check-formatted
mix credo
mix dialyzer
See the section on tests below for information on running unit tests, which requires having a local MQTT broker running.
If you run into issues compiling snabbkaffe:
rm -fr deps/quicer
mix deps.get
mix deps.compile
Tests
To run the tests, first install and set up Colima, Docker, and docker-compose:
brew install docker docker-compose colima
colima start
mkdir -p ${DOCKER_CONFIG:-"$HOME/.docker"}/cli-plugins
ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ${DOCKER_CONFIG:-"$HOME/.docker"}/cli-plugins/docker-compose
Then start the Compose configuration and run the tests:
- In a separate window or tab:
docker compose up mix test
Docker
Concentrate comes with a Dockerfile, allowing you to build an image that can be run anywhere Docker works. It's a multi-stage build, so it requires at least Docker 17.05.
# build
docker build -t concentrate:latest .
# run
docker run concentrate:latest