Fly.io es una excelente opción para desplegar y probar tus proyectos hechos con Ruby on Rails.  Te dejo los comandos esenciales para hacerte la vida mas fácil trabajando en este entorno.

Instalación


En MacOS
brew install flyctl

En Linux
curl -L https://fly.io/install.sh | sh

Autenticación


Registrarse (Si no tienes cuenta)
fly auth signup

Ingresar
fly auth login


Despliegue


Inicializar el Proyecto en Fly.io
El primer paso es inicializar tu proyecto en Fly.io. Este comando configurará tu aplicación y creará los archivos necesarios.

fly launch

Desplegar la Aplicación
Una vez que tu aplicación esté configurada y lista para ser desplegada, utiliza:

fly deploy

Dominios


Para poder conectar nuestro dominio debemos haber adquirido alguno y tener acceso a la edición los registros DNS. Luego vamos a ejecutar algunos comandos usando el CLI de Fly.io

Listar Direcciones IP
Después de desplegar la aplicación, es esencial listar las direcciones IP asignadas a tu aplicación. Esto es necesario para añadir las IPs a los registros DNS de tu administrador de dominios.

fly ips list

Salida esperada:
VERSION IP        TYPE                REGION  CREATED AT       
v6      <tuipv6>  public (dedicated)  global  Jun 3 2024 15:55
v4      <tuipv4>  public (shared)             Jan 1 0001 00:00

Añadir IPs a los Registros DNS
Usa las IPs listadas (IPv4 e IPv6) para actualizar los registros DNS en tu administrador de dominios. Para la IPv4 se usa un registro A apuntando a @ o un subdominio si lo prefieres y para la IPv6 se usa un registro AAAA.

Configurar el Dominio en `production.rb`
En el archivo `config/environments/production.rb` de tu proyecto Rails, añade tu dominio:

config.hosts << "yourdomain.com"

Añadir Certificado SSL
Después de actualizar los registros DNS y configurar el dominio, añade un certificado SSL para tu dominio.

fly certs add yourdomain.com

Base de Datos


Acceder a la Consola de Rails
Para acceder a la consola de Rails en tu aplicación desplegada, utiliza:

fly ssh console --pty -C "/rails/bin/rails console"

Ejecutar `db:seed`
Si necesitas ejecutar las semillas de la base de datos, usa:

fly ssh console --pty -C "/rails/bin/rails db:seed"

Conectarse a una base de datos existente en fly.io
## Entra a la consola de la aplicación que ya esta
## conectada a una base de datos fly
fly ssh console -a santiago
## Obtén tus credenciales
env
## Toma DATABASE_URL y setealo con el siguiente
## comando en la nueva app
fly secrets set DATABASE_URL=<DATABASE_URL>

Regiones


En algunos casos, es necesario desplegar tu aplicación en regiones específicas o administrar múltiples instancias de máquinas y bases de datos en Fly.io. A continuación, te detallo los comandos esenciales para trabajar con instancias y bases de datos en Fly.io.

Instancias
Crear una máquina en una zona específica
fly scale count 1 --region region -a nombredetuapp

Listar máquinas existentes
fly machines list -a nombredetuapp

Detener una máquina específica
fly machines stop <id> -a nombredetuapp

Destruir una máquina específica
fly machines destroy <id> -a nombredetuapp

Bases de Datos en Fly.io
Listar máquinas de la base de datos
fly machines list -a nombredetudb

Clonar la base de datos en una nueva región. IMPORTANTE: haz este proceso al menos dos veces para que funcione el failover
fly machines clone <id> --region region -a nombredetudb

Promover una réplica a primaria
flyctl postgres failover -a nombredetudb --allow-secondary-region

Detener máquinas de la base de datos, puedes detener la antigua y la replica innecesaria.
fly machines stop <id> -a nombredetudb

Destruir máquinas detenidas
fly machines destroy <id> -a nombredetudb

Extender Volumen
Listar volúmenes
fly volumes list -a nombredetudb

Listar máquinas de la base de datos
fly machines list -a nombredetudb

Detener la base de datos
fly machines stop <id> -a nombredetudb

Extender el volumen, por ejemplo 5 GB
fly volumes extend <volume_id> --size 5 -a nombredetudb

Iniciar la base de datos
fly machines start <id> -a nombredetudb

Eliminar volúmenes no utilizados
fly volumes delete <id> -a nombredetudb

Con estos comandos, podrás gestionar fácilmente las instancias, bases de datos y volúmenes en Fly.io para tus proyectos de Ruby on Rails. Espero que esta guía te sea útil para tus despliegues.