Atualização de Read.me e \correção da autorização no primeiro login
This commit is contained in:
@@ -16,8 +16,10 @@
|
||||
# gem nova no Gemfile não chega no container só com --build.
|
||||
# 4. migrations — db:prepare: cria o banco se não existir, roda as migrations
|
||||
# pendentes e só faz seed em banco recém-criado (idempotente).
|
||||
# 5. cron — grava o crontab do config/schedule.rb e sobe o daemon.
|
||||
# 6. Puma — processo em primeiro plano (é ele que segura o container).
|
||||
# 5. assets — em production o Propshaft NÃO compila sob demanda: o
|
||||
# arquivo digerido tem que estar em public/assets.
|
||||
# 6. cron — grava o crontab do config/schedule.rb e sobe o daemon.
|
||||
# 7. Puma — processo em primeiro plano (é ele que segura o container).
|
||||
set -uo pipefail
|
||||
|
||||
log() { echo "[boot] $*"; }
|
||||
@@ -85,7 +87,53 @@ for i in $(seq 1 $tentativas); do
|
||||
sleep 6
|
||||
done
|
||||
|
||||
# ── 5. Cron (best-effort) ────────────────────────────────────────────────────
|
||||
# ── 5. Assets ────────────────────────────────────────────────────────────────
|
||||
# POR QUE ISTO EXISTE: com RAILS_ENV=production — que é como o teste e o servidor
|
||||
# rodam hoje — o Propshaft não serve asset dinamicamente. Ele resolve o caminho
|
||||
# pelo public/assets/.manifest.json e quem entrega o arquivo é o servidor de
|
||||
# estáticos; sem o arquivo em disco a requisição cai no roteador do Rails e volta
|
||||
# 404 (a página public/404.html, não um erro de asset — por isso é difícil de
|
||||
# reconhecer). Nada no deploy gerava esses arquivos: a linha do Dockerfile está
|
||||
# comentada de propósito (o bind-mount `.:/app` do compose cobriria o que ela
|
||||
# gerasse na imagem) e o boot não tocava no assunto. O que existia em
|
||||
# public/assets no servidor era o resto de algum precompile manual antigo.
|
||||
#
|
||||
# CASO REAL (28/08/2026): o HTML pedia
|
||||
# /assets/controllers/carrossel_controller-913b47f7.js e esse arquivo não existia
|
||||
# mais -> 404 -> "Failed to fetch dynamically imported module" no console, com o
|
||||
# carrossel (a paginação por tamanho de tela) e o editor de romaneio MORTOS no
|
||||
# ambiente de teste. Só esses dois quebraram porque são os dois mais recentes:
|
||||
# os outros dez controllers ainda vinham do cache do Cloudflare (max-age de 1
|
||||
# ano), o que escondeu o problema por dias e fez parecer defeito de dois arquivos.
|
||||
#
|
||||
# A LIMPEZA ANTES do precompile é de propósito: sem ela um manifesto antigo
|
||||
# convive com arquivos novos e a divergência volta na primeira alteração de JS.
|
||||
# Assim manifesto e arquivos saem sempre da MESMA execução. É `rm -rf` e não
|
||||
# `rails assets:clobber` porque faz exatamente o mesmo (essas duas pastas), sem
|
||||
# pagar um boot inteiro do Rails só para apagar diretório.
|
||||
if [ "${RAILS_ENV:-development}" = "production" ]; then
|
||||
log "assets: limpando restos e pré-compilando (public/assets)"
|
||||
rm -rf public/assets tmp/cache/assets
|
||||
if bundle exec rails assets:precompile; then
|
||||
log "assets prontos"
|
||||
else
|
||||
# NÃO sai com erro: sem JS o sistema fica ruim, mas ainda dá para entrar e
|
||||
# ler os dados — e um `exit 1` aqui viraria loop de reinício com o
|
||||
# `restart: unless-stopped`, deixando TODO MUNDO de fora. O aviso é gritado
|
||||
# no log para não repetir a história de descobrir dias depois.
|
||||
log "ERRO: assets:precompile falhou — o sistema vai subir SEM JS/CSS novos."
|
||||
log " Rode 'docker compose exec app bundle exec rails assets:precompile'"
|
||||
log " e veja o erro completo."
|
||||
fi
|
||||
else
|
||||
# Em development o Propshaft calcula o digest do arquivo atual a cada
|
||||
# requisição. Sobra de precompile faz ele voltar a resolver pelo manifesto, e
|
||||
# aí toda alteração de JS/CSS só aparece depois de recompilar — parece que o
|
||||
# navegador está com cache quando não está.
|
||||
rm -rf public/assets
|
||||
fi
|
||||
|
||||
# ── 6. Cron (best-effort) ────────────────────────────────────────────────────
|
||||
# Best-effort de propósito: agendamento quebrado atrasa um relatório, mas NUNCA
|
||||
# pode impedir o sistema de subir. As variáveis do banco chegam ao job pelo
|
||||
# dotenv quando o rake carrega o Rails — o cron não precisa herdar o ENV.
|
||||
@@ -95,6 +143,6 @@ else
|
||||
log "AVISO: cron/crontab indisponível (rode com --build) — seguindo sem agendamento"
|
||||
fi
|
||||
|
||||
# ── 6. Puma ──────────────────────────────────────────────────────────────────
|
||||
# ── 7. Puma ──────────────────────────────────────────────────────────────────
|
||||
log "subindo o Rails"
|
||||
exec bundle exec rails s -b 0.0.0.0
|
||||
|
||||
Reference in New Issue
Block a user