Capítulo 1: Introducción a la Recarga en Vivo

¿Qué es la Recarga en Vivo?

La recarga en vivo es una característica que permite a tu entorno de desarrollo observar los cambios en tu código y recargar automáticamente tu aplicación. Cuando guardas un archivo, la herramienta de recarga en vivo detecta el cambio, reconstruye la aplicación y la reinicia. Esto te ahorra el proceso manual de detener el servidor, reconstruir la aplicación y reiniciarla después de cada cambio.

Beneficios de la Recarga en Vivo para el Desarrollo en Go

La recarga en vivo puede acelerar significativamente el proceso de desarrollo. Para los desarrolladores de Go, que están acostumbrados a compilar su código antes de ejecutarlo, la recarga en vivo significa un flujo de trabajo mejorado con retroalimentación inmediata. Los beneficios incluyen:

  1. Aumento de la Productividad: Los desarrolladores pueden mantenerse concentrados sin interrupciones, ya que no necesitan realizar reconstrucciones manuales.
  2. Ahorro de Tiempo: La recarga en vivo reduce el tiempo de respuesta para ver los cambios de código reflejados en la aplicación en ejecución.
  3. Detección de Errores: Las reconstrucciones y reinicios instantáneos permiten a los desarrolladores detectar y corregir errores más rápido.
  4. Flujo de Trabajo Optimizado: Se integra perfectamente en el proceso de desarrollo, haciéndolo más suave y eficiente.

Capítulo 2: ¿Qué es Air?

Air es una utilidad de línea de comandos diseñada para proporcionar capacidades de recarga en vivo para aplicaciones en Go. Supervisa los cambios en tu código fuente y reconstruye y reinicia automáticamente tu aplicación en Go. Esto significa que puedes centrarte más en el desarrollo de características y menos en tareas repetitivas.

Funcionalidades

Air ofrece una variedad de funcionalidades adecuadas para un entorno de desarrollo moderno en Go:

  • Reconstrucciones Automáticas: Detecta cambios en archivos y desencadena reconstrucciones.
  • Comandos de Construcción Personalizables: Te permite personalizar los comandos de construcción según las necesidades de tu proyecto.
  • Exclusiones de Directorios: Te permite especificar los directorios a excluir del monitoreo.
  • Soporte para Nuevos Directorios: Puede observar nuevos directorios agregados después de que Air haya sido iniciado.
  • Registros Coloridos y Legibles: Mejora la legibilidad de los registros de salida con codificación de colores.
  • Argumentos de la CLI: Los campos de configuración se pueden establecer directamente a través de argumentos de línea de comandos para ajustes rápidos.

Consulta el contexto proporcionado por el desarrollador para obtener una lista completa de funcionalidades disponibles con Air.

Capítulo 3: Instalación de air

3.1 Instalación a través de go install

Para instalar Air usando la cadena de herramientas de Go versión 1.18 o superior:

go install github.com/cosmtrek/air@latest

Esto hará que air esté disponible en tu GOPATH/bin.

3.2 Uso del script install.sh

Otro método es a través de un script de instalación proporcionado:

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

Después de la instalación, verifica ejecutando:

air -v

3.3 Instalaciones Especiales (Docker/Podman y RUTA Personalizada)

Para aquellos que usan Docker o Podman, hay una forma simplificada de incluir Air:

docker run -it --rm \
    -w "/ruta/al/proyecto" \
    -v $(pwd):/ruta/al/proyecto \
    -p puerto:puerto \
    cosmtrek/air

Reemplaza /ruta/al/proyecto con la ruta de tu proyecto y puerto:puerto con el mapeo de puerto deseado.

Alternativamente, para una instalación en una RUTA específica:

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

Capítulo 4: Configurando air para tu Proyecto en Go

4.1 Entendiendo la Configuración de .air.toml

.air.toml es el archivo de configuración para Air. Te permite especificar ajustes relacionados con el proceso de construcción, monitoreo de directorios y salida de registros. Aquí tienes un resumen breve de las secciones clave:

  • root: Establece el directorio de trabajo para Air.
  • build: Contiene ajustes relacionados con la construcción, como comandos a ejecutar antes/después de la construcción y el comando principal de construcción.
  • tmp_dir: El directorio donde se almacenan los archivos temporales de construcción.
  • log: Configura los ajustes del archivo de registro.
  • color: Personaliza el color de cada parte de la salida del registro.

4.2 Generación y Modificación del Archivo de Configuración

Para generar un archivo de configuración predeterminado .air.toml, ejecuta:

air init

Esto creará un archivo .air.toml con la configuración predeterminada en tu directorio actual. Luego puedes modificarlo para que se ajuste a los requisitos de tu proyecto. Como referencia, puedes consultar el archivo air_example.toml proporcionado en el contexto.

4.3 Sobrescribir la Configuración con Argumentos de la CLI

Para pruebas rápidas o cambios menores, puedes sobrescribir la configuración en .air.toml pasando argumentos de la CLI. Por ejemplo:

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

Esta flexibilidad te permite personalizar fácilmente el comportamiento de Air sin necesidad de cambiar el archivo de configuración.

Capítulo 5: Ejecutando air en tu Entorno de Desarrollo

6.1 Iniciando air en tu Proyecto

Para comenzar a usar air en tu proyecto, navega hasta el directorio raíz de tu proyecto en tu terminal y ejecuta el comando air. Si hay un archivo de configuración .air.toml presente, air lo usará automáticamente. De lo contrario, utilizará la configuración predeterminada.

cd /ruta/a/tu_proyecto
air

Nota: Si encuentras problemas de permisos con el ejecutable air, asegúrate de que tenga los permisos de ejecución necesarios (chmod +x $(go env GOPATH)/bin/air).

6.2 Personalizando los Comandos de Compilación y Ejecución con air

Puedes personalizar los comandos de compilación y ejecución utilizados por air modificando el archivo de configuración .air.toml, específicamente bajo la sección [build]. Por ejemplo, para cambiar el comando de compilación y especificar un archivo binario diferente:

[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"

Para requisitos de compilación más complejos, los arrays pre_cmd y post_cmd en el archivo de configuración te permiten ejecutar comandos antes y después del proceso de compilación, respectivamente.

Consejo: Un ejemplo completo de configuración de air

6.3 Excluir Directorios y Observar Cambios

air también te permite excluir directorios de ser observados por cambios, lo cual puede ser útil para directorios que contienen activos o dependencias que no necesitan provocar una reconstrucción.

Para configurar esto, actualiza el campo exclude_dir en .air.toml:

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

También puedes indicar a air que incluya directorios adicionales usando include_dir, o que observe extensiones de archivo específicas con include_ext.

Capítulo 6: Uso Avanzado

6.1 Configuración de air con Contenedores Docker

Usar air dentro de un contenedor Docker puede agilizar la configuración de desarrollo, especialmente al trabajar en equipo. Para incluir air en tu entorno Docker, actualiza tu Dockerfile para instalar air y copiar tu .air.toml dentro del contenedor:

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 Uso de air en un Entorno Docker-compose

Para integrar air en un servicio gestionado por docker-compose, define un servicio en tu archivo docker-compose.yaml:

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

Asegúrate de que la directiva volumes esté mapeando correctamente el directorio de tu proyecto al directorio de trabajo en el contenedor para que air pueda detectar cambios en los archivos.

Capítulo 7: Solución de Problemas Comunes y Preguntas Frecuentes

7.1 Solución para el Error command not found: air

Si te encuentras con un error de command not found: air, generalmente significa que el binario de air no está en el PATH de tu sistema. Para resolver esto, agrega la ruta de los binarios de Go a tu variable de entorno PATH:

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

7.2 Problemas en Entornos WSL

En un entorno del Subsistema de Windows para Linux (WSL), asegúrate de escapar los caracteres especiales en tu archivo .air.toml. Por ejemplo, utiliza \\ para escapar las barras inclinadas en las rutas de archivos.

7.3 Consejos sobre Compilación en Caliente sin Ejecutar el Binario

Si deseas que air compile tu aplicación Go sin ejecutarla, establece el cmd en la sección [build] de tu archivo .air.toml en un comando de no operación (como /bin/true en sistemas basados en Unix):

[build]
cmd = "/bin/true"

Al hacer esto, air seguirá observando los cambios en los archivos y activará el proceso de compilación, pero no intentará ejecutar el archivo binario resultante.