Depois de alguns meses trabalhando em projeto open-source eu ainda me encontro problemas com algumas coisas. E tudo bem! Dessa vez vou contar o causo do PostgreSQL.
Como alguns de vocês sabem, eu trabalho na Operação Serenata de Amor. Uma das ferramentas que nós desenvolvemos é chamada de Jarbas. Ele é uma aplicação web com backend em Django usando PostgreSQL para banco de dados. A última vez que eu configurei e rodei o Jarbas foi o ano passado e eu estava usando um computador com Linux. Sem muitos mistérios, essa também foi a primeira vez que contribui para o projeto. Mas agora, eu estou usando uma máquina MacOS e as coisas são um pouquinho diferente.
Eu comecei instalando o PostgreSQL usando brew (recomendo veementemente). Homebrew torna o processo de instalação relativamente simples. O comando para isso foi:
|
Você pode pensar que é apenas isso. Mamão com açúcar. Então é só ir para o repositório do Jarbas que você clonou e criar o arquivo de configuração de ambiente - .env - e rodar o tradicional comando do Django python manage.py migrate. E foi é aí que encontramos o primeiro erro:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Esse é o momento em que você se pergunta: Pera, o quê? Que tipo de erro é esse?

Depois de alguns minutos procurando, eu encontrei essa maravilhosa conversa no Stackoverflow. Vou simplificar aqui: Depois de instalar o PostgreSQL você muito provavelmente (como eu) terá que iniciar o serviço e uma base de dados para você utilizar. Eu não vou repassar os passos descritos no stackoverflow aqui mas chega um ponto onde você terá duas opções:
- Carregar o agente de inicialização;
- Inicializar de fato o agente.
Como era minha primeira vez fazendo isso, eu achei que era um caminho mais lógico inicializar um novo agente.
Depois da inicialização, eu preciso checar se está funcionando ou não. Nunca se sabe até testar, num é mesmo? E para fazer isso, nós podemos conectar ao PostgreSQL:
|
Isso me deu apenas o Postgres rodando, eu ainda preciso de uma base de dados.
O app do Jarbas espera uma base chamada jarbas. Então vamos dar esse nome para nossa nova base de dados fazendo o seguinte:
|
Como você pode esperar, isso não foi o suficiente. Eu tentei rodar novamente o comando de migração e aí isso aconteceu: django.db.utils.OperationalError: FATAL: role "Jarbas" does not exist.
Aah como não amar a vida de dev?!
Então vamos criar um papel:
|
|
E de novo estourou um erro: django.db.utils.OperationalError: FATAL: role "jarbas" is not permitted to log in. O que falta agora é dar permissões para o papel , não sei como não pensei nisso antes…
|
|
Agora rodando mais uma vez o comando de migração e voilà:

E aí chegamos no ponto onde podemos pensar: Como diabos vou saber se tá tudo funcionando como deveria? Bem, Jarbas tem suites de teste que você pode tentar rodar, aí elas vão falhar:
|
|
|
|
|
|
Vamos precisar fazer outra modificação no papel jarbas e dar para esse papel a permissão para criar novos bancos de dados:
|
|
E aí, finalmente os testes passam lindamente:
