Migrations standalone para o banco de leads

TLDR: Adicionar o setup mínimo de Ruby/ActiveRecord para rodar migrations contra o banco leads, sem precisar de uma aplicação Rails completa.

Contexto

O banco leads (PostgreSQL 17, provisionado via Terraform) não tinha nenhum serviço responsável por gerenciar seu schema. Era preciso o setup mínimo de Ruby para rodar migrations do ActiveRecord sem carregar uma app Rails inteira.

Objetivos

  • Rodar db:migrate e db:rollback contra o banco de leads
  • Gerar arquivos de migration com timestamp através de um target de make
  • Seguir as convenções do projeto (targets de make em .project/make/, serviço no compose.yml da raiz)

Fora de escopo

— (não registrado na spec original)

Mudanças

  • leads/Gemfile — activerecord, pg, rake, standalone_migrations
  • leads/Rakefile — carrega as tasks do AR via standalone_migrations e adiciona a task db:generate
  • leads/lib/db.rb — configuração da conexão do AR via variáveis de ambiente LEADS_DB_*
  • leads/db/migrate/ — diretório vazio para as migrations
  • compose.yml — serviço leads (ruby:3.3-alpine, mesma rede do postgres)
  • .project/make/leads.mk — leads.db.migrate, leads.db.rollback, leads.db.create, leads.migration.create
  • Makefile — include .project/make/leads.mk

Como verificar

bash make leads.db.create make leads.migration.create name=create_contacts make leads.db.migrate make leads.db.rollback

Documentação

— (não registrado na spec original)