Skip to content

Instantly share code, notes, and snippets.

@html-3
Last active April 22, 2022 14:41
Show Gist options
  • Save html-3/d0ec043471f04b8ad018eed34b541ab1 to your computer and use it in GitHub Desktop.
Save html-3/d0ec043471f04b8ad018eed34b541ab1 to your computer and use it in GitHub Desktop.
Um pouco sobre Heroku

Um pouco sobre Heroku

Definição

Uma plataforma que redistribui os serviços web da Amazon para clientes menores. Nela é possível hospedar APIs e outros tipos de aplicativos.

CLI

O CLI ou Command Line Interface da Heroku é uma potente ferramenta para manipular os aplicativos hostados por meio dos serviços da Heroku.

O primeiro passo é instalar o CLI, a documentação da Heroku é clara, concisa e aborda a instalação para os principais sistemas operacionais (macOS, Windows, Ubuntu e outras versões de baseadas em Linux).

Depois da instalação, várias funcionalidades podem ser efetuadas com mais rapidez que pelo uso da plataforma web. Vamos ver algumas dessas.

CRUD em bancos Postgres

Muitas vezes queremos manipular os dados que temos no banco de dados associado ao nosso aplicativo. Contudo, a interface web da Heroku não nos permite fazer todas as operações CRUD que desejamos. Para contornar esse problema, podemos criar um arquivo SQL com comandos válidos para nosso data base.

Um tempo atrás tive que inserir alguns milhares de cadastros no banco do tipo PostgreSQL da minha startup: tinha a opção de fazer isso pela ORM do meu app, o que levaria 10 horas para completar, ou pela CLI da Heroku, em 1 minuto. A solução era óbvia.

$ heroku pg:psql -a <app_name> -f <file_name>

Entende-se que <app_name> trata-se do nome do seu aplicativo e <file_name> o nome do seu arquivo com a extensão do arquivo (neste caso .sql). Caso seu aplicativo tenha mais de um banco, o nome do banco deve ser especificado no lugar do command flag -a e o <app_name>.

Informações gerais do banco de dados também podem ser obtidas pela CLI.

$ heroku pg:info -a <app_name>

Ainda, o banco pode ser resetado com o seguinte comando junto com a confirmação que ele solicita. Tome muito cuidado com ele!

$ heroku pg:reset -a <app_name>
!    WARNING: Destructive action
!    <db_name> will lose all of its data
!
!    To proceed, type <app_name> or re-run this command with --confirm <app_name>
>

Backups de bancos Postgres

A forma pela qual os backups são obtidos pela interface web da Heroku é demorada e não pode ser automatizada. Por isso, vamos ver como fazer pelo CLI.

Primeiro, como fazer um backup de um database com nome <db_name>:

$ heroku pg:backups:capture <db_name>

Para agendar eles, podemos definir a hora diária do backup com a opção --at. Veja o seguinte seguinte comando o qual determina o backup automático às 3:00 AM em referência ao horário de São Paulo (GMT-3).

$ heroku pg:backups:capture <db_name> --at '03:00 America/Sao_Paulo' --app <app_name>

Note que: Em Windows os apóstrofes (‘) devem ser substituídos por apóstrofes duplos (“) Dependendo do plano, um número específico de backups é permitido Os backups podem ser estabelecidos para uma diversidade de zonas horárias Backups automáticos são suspendidos cadas vez que o plano do banco é alterado, um backup é restaurado ou um banco de dados passa do tier hobby para production

Backups podem ser visualizados com:

$ heroku pg:backups:schedules --app <app_name>

E desmarcados por:

$ heroku pg:backups:unschedule <db_name> --app <app_name>

Deploy com Git

Recentemente o Heroku descobriu um bug nos deploys automáticos do GitHub, por conta disso os deploys tiveram que ser feitos por outros meios, um desses eh pelo CLI da Heroku pelo qual comandos Git podem ser executados para controlar o versionamento do seu aplicativo.

Para começar, desde o terminal, vá à raiz do repositório local do seu aplicativo.

Caso seu código fonte do seu app não tenha sido hospedado pela Heroku anteriormente, execute:

$ heroku create -a <app_name>

Caso seu código já esteja hospedado, use o seguinte comando para alterar a versao dele pelo terminal:

$ heroku git:remote -a example-app

Para empurrar uma nova versão da sua branch principal (caso ela tenha o nome main):

$ git push heroku main

Ou para empurrar a versão de uma branch específica com nome <branch_name> do seu repositório:

$ git push heroku <branch_name>:main

Referências

Heroku CLI

Backups de bancos Postgres Heroku

Deploy em Heroku com Git

Executar script SQL no Heroku

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment