Ao desenvolver em Django costumava ter uma tab com o runserver a correr. Como uso Compass, tinha outra tab com o watch atento a modificações aos meus ficheiros Sass. Com o postgres, gosto de correr em foreground para que quando termine de trabalhar no projeto em questão, a base de dados não continue a correr. É outra tab.
Já são 4 tabs abertas, contando com a que é preciso para ir executando comandos.
Quando comecei a usar o Heroku, através do uso do ficheiro Procfile descobri o Foreman.
Com o foreman, posso correr a base de dados, servidor web, compass/sass e mais qualquer outro comando em foreground. Tudo isso na mesma tab do terminal. Agora só uso duas.
Quando quiser terminar o trabalho, basta um Ctrl+C e todos esses serviços são encerrados.
Como funciona?
Simplesmente tenho um ficheiro Procfile na raiz do meu projeto (virtualenv), com o seguinte:
db: postgres -D /usr/local/var/postgres web: python manage.py runserver 0.0.0.0:8000 sass: compass watch theme
As chaves podem ser o que quisermos. Com o mysql eu tenho:
db: mysqld ...
Para correr os comandos no Procfile (output agregado com cores diferentes), basta executar:
$ foreman start
O Foreman está em Ruby, portanto instala-se com rubygems (eu uso o Bundler):
$ gem install foreman
Também uso isto para iniciar variáveis de ambiente específicas ao projeto e usá-las nas configuração, mas é matéria para outro post.