Capítulo 1: Introdução ao Live Reloading

O que é Live Reloading?

Live reloading é um recurso que permite que o seu ambiente de desenvolvimento observe as alterações no seu código e recarregue automaticamente a sua aplicação. Ao salvar um arquivo, a ferramenta de live reload detecta a alteração, reconstrói a aplicação e a reinicia. Isso poupa você do processo manual de parar o servidor, reconstruir a aplicação e reiniciá-la a cada alteração.

Benefícios do Live Reloading para o Desenvolvimento em Go

O live reloading pode acelerar significativamente o processo de desenvolvimento. Para os desenvolvedores em Go, que estão acostumados a compilar o código antes de executá-lo, o live reloading significa um fluxo de trabalho melhorado com feedback imediato. Os benefícios incluem:

  1. Aumento da Produtividade: Os desenvolvedores podem permanecer focados sem interrupções, pois não precisam realizar reconstruções manuais.
  2. Economia de Tempo: O live reloading reduz o tempo necessário para visualizar as alterações de código refletidas na aplicação em execução.
  3. Detecção de Erros: Reconstruções e reinicializações instantâneas permitem que os desenvolvedores detectem e corrijam erros mais rapidamente.
  4. Fluxo de Trabalho Simplificado: Integra-se perfeitamente ao processo de desenvolvimento, tornando-o mais suave e eficiente.

Capítulo 2: O que é Air?

O Air é uma utilidade de linha de comando projetada para fornecer capacidades de live reloading para aplicações em Go. Ele monitora as alterações no seu código-fonte e reconstrói e reinicia automaticamente a sua aplicação em Go. Isso significa que você pode se concentrar mais no desenvolvimento de funcionalidades e menos em tarefas repetitivas.

Recursos

O Air oferece uma variedade de recursos adequados para um ambiente de desenvolvimento moderno em Go:

  • Reconstruções Automáticas: Detecta alterações de arquivos e aciona reconstruções.
  • Comandos de Build Personalizáveis: Permite personalizar os comandos de build de acordo com as necessidades do seu projeto.
  • Exclusões de Diretórios: Permite especificar diretórios a serem excluídos da observação.
  • Suporte para Novos Diretórios: Pode observar novos diretórios adicionados após o início do Air.
  • Logs Coloridos e Legíveis: Melhora a legibilidade dos logs de saída com codificação de cores.
  • Argumentos de Linha de Comando: Campos de configuração podem ser definidos diretamente através de argumentos de linha de comando para ajustes rápidos.

Consulte o contexto fornecido pelo desenvolvedor para obter uma lista completa de recursos e funcionalidades disponíveis com o Air.

Capítulo 3: Instalando o air

3.1 Instalação via go install

Para instalar o Air usando a ferramenta Go na versão 1.18 ou superior:

go install github.com/cosmtrek/air@latest

Isso tornará o air disponível no seu GOPATH/bin.

3.2 Usando o script install.sh

Outro método é através de um script de instalação fornecido:

curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

Após a instalação, verifique executando:

air -v

3.3 Instalações Especiais (Docker/Podman e PATH Personalizado)

Para aqueles que utilizam Docker ou Podman, há uma maneira simplificada de incluir o Air:

docker run -it --rm \
    -w "/caminho/do/projeto" \
    -v $(pwd):/caminho/do/projeto \
    -p porta:porta \
    cosmtrek/air

Substitua /path/to/project pelo caminho do seu projeto e port:port pela mapeamento de porta desejado.

Alternativamente, para uma instalação em um PATH específico:

curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/caminho/personalizado sh

Capítulo 4: Configurando o air para o Seu Projeto em Go

4.1 Compreendendo a Configuração .air.toml

.air.toml é o arquivo de configuração para o Air. Ele permite que você especifique configurações relacionadas ao processo de build, monitoramento de diretórios e saída de log. Aqui está uma breve visão geral das seções-chave:

  • root: Define o diretório de trabalho para o Air.
  • build: Contém configurações relacionadas ao build, como comandos para executar antes/depois da construção e o comando principal de build.
  • tmp_dir: O diretório onde os arquivos temporários de build são armazenados.
  • log: Configura as definições do arquivo de log.
  • color: Personaliza a cor de cada parte da saída do log.

4.2 Geração e Modificação do Arquivo de Configuração

Para gerar um arquivo de configuração padrão .air.toml, execute:

air init

Isso criará um arquivo .air.toml com as configurações padrão no diretório atual. Em seguida, você pode modificá-lo para atender aos requisitos do seu projeto. Para referência, você pode consultar o air_example.toml fornecido no contexto.

4.3 Sobrescrevendo Configurações com Argumentos de CLI

Para testes rápidos ou alterações simples, você pode substituir a configuração em .air.toml passando argumentos de CLI. Por exemplo:

air --build.cmd "go build -o myapp" --build.bin "./myapp"

Essa flexibilidade permite personalizar facilmente o comportamento do Air sem alterar o arquivo de configuração.

Capítulo 5: Executando o air em seu Ambiente de Desenvolvimento

6.1 Iniciando o air em Seu Projeto

Para começar a usar o air em seu projeto, navegue até o diretório raiz do seu projeto no terminal e execute o comando air. Se um arquivo de configuração .air.toml estiver presente, o air o utilizará automaticamente. Caso contrário, ele usará as configurações padrão.

cd /caminho/do/seu_projeto
air

Dica: Se você encontrar problemas de permissão com o executável air, verifique se ele possui as permissões de execução necessárias (chmod +x $(go env GOPATH)/bin/air).

6.2 Personalizando Comandos de Compilação e Execução com o air

Você pode personalizar os comandos de compilação e execução usados pelo air modificando o arquivo de configuração .air.toml, especificamente na seção [build]. Por exemplo, para alterar o comando de compilação e especificar um arquivo binário diferente:

[build]
cmd = "go build -o ./tmp/meu-binario-customizado ."
bin = "tmp/meu-binario-customizado"

Para requisitos de compilação mais complexos, os arrays pre_cmd e post_cmd no arquivo de configuração permitem que você execute comandos antes e depois do processo de compilação, respectivamente.

Dicas: [Um exemplo completo de configuração do air] (https://github.com/cosmtrek/air/blob/master/air_example.toml "Um exemplo completo de configuração do air")

6.3 Excluindo Diretórios e Observando Alterações

O air também permite excluir diretórios da lista de monitoramento de alterações, o que pode ser útil para diretórios que contêm ativos ou dependências que não precisam acionar uma reconstrução.

Para configurar isso, atualize o campo exclude_dir em .air.toml:

[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]

Você também pode instruir o air a incluir diretórios adicionais usando include_dir, ou observar extensões de arquivo específicas com include_ext.

Capítulo 6: Uso Avançado

6.1 Configurando o air com Contêineres Docker

Usar o air dentro de um contêiner Docker pode otimizar sua configuração de desenvolvimento, especialmente ao trabalhar com equipes. Para incluir o air em seu ambiente Docker, atualize seu Dockerfile para instalar o air e copiar o seu arquivo .air.toml para o contêiner:

FROM golang:1.18-alpine AS builder

RUN go install github.com/cosmtrek/air@latest

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

CMD ["air", "-c", ".air.toml"]

6.3 Usando o air em um Ambiente Docker-compose

Para integrar o air em um serviço gerenciado pelo docker-compose, defina um serviço em seu arquivo docker-compose.yaml:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "808:808"
    volumes:
      - .:/app
    command: ["air", "-c", ".air.toml"]

Certifique-se de que a diretiva volumes está mapeando corretamente o diretório do seu projeto para o diretório de trabalho no contêiner, para que o air possa detectar alterações nos arquivos.

Capítulo 7: Solução de Problemas Comuns e Perguntas Frequentes

7.1 Corrigindo o Erro command not found: air

Se você encontrar um erro command not found: air, isso geralmente significa que o binário air não está no PATH do seu sistema. Para resolver isso, adicione o caminho dos binários do Go à variável de ambiente PATH:

export PATH=$PATH:$(go env GOPATH)/bin

7.2 Problemas em Ambientes WSL

Em um ambiente do Subsistema do Windows para Linux (WSL), certifique-se de escapar os caracteres especiais no seu arquivo .air.toml. Por exemplo, utilize \\ para escapar as barras invertidas nos caminhos dos arquivos.

7.3 Dicas sobre Compilação Rápida Sem Executar o Binário

Se você deseja que o air compile sua aplicação Go sem executá-la, defina o cmd na seção [build] do seu arquivo .air.toml como um comando de não operação (como /bin/true em sistemas baseados em Unix):

[build]
cmd = "/bin/true"

Fazendo isso, o air ainda observará as alterações nos arquivos e acionará o processo de compilação, mas não tentará executar o arquivo binário resultante.