Separando Procfile para ambiente de desenvolvimento e produção

É comum usar um serviço como o Foreman para gerenciar serviços executados em seu servidor.

Heroku permite gerenciar serviços com um Procfile.

A questão é que geralmente é uma prática ter um desses arquivos para desenvolvimento e produção.

Procfile

redis
: redis-server restart
resque
: env bundle exec rake jobs:work
elasticsearch
: elasticsearch -f
web
: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
resque_scheduler
: bundle exec rake resque:scheduler

Alguns desses serviços não são necessários no heroku e acabarão aparecendo como trabalhadores não utilizados.

Agora estamos fazendo isso:

Procfile.dev

redis
: redis-server restart
resque
: env bundle exec rake jobs:work
elasticsearch
: elasticsearch -f
foreman
: foreman start -f Procfile

Procfile

web
: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
resque_scheduler
: bundle exec rake resque:scheduler

Assim, no heroku, veremos apenas os trabalhadores que usamos.

Tive a ideia a partir deste post: http://stackoverflow.com/questions/11592798/use-different-procfile-in-development-and-production