Automatiza migrations no boot + rake de diagnóstico
- docker-compose: command roda `rails db:prepare` antes de subir o server (cria DB se faltar, aplica migrations pendentes, seed só em DB novo) — elimina o passo manual de db:migrate após o up - lib/tasks/diagnostico.rake: `rake reem:diagnostico` substitui o runner longo de checagem da tabela externa (conta/período/datas disponíveis) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,9 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ".:/app"
|
- ".:/app"
|
||||||
- "bundle_cache:/usr/local/bundle"
|
- "bundle_cache:/usr/local/bundle"
|
||||||
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -b 0.0.0.0"
|
# db:prepare = cria o banco se não existir, roda migrations pendentes e
|
||||||
|
# só faz seed se o banco acabou de ser criado (idempotente, seguro no boot).
|
||||||
|
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails db:prepare && bundle exec rails s -b 0.0.0.0"
|
||||||
# O banco PostgreSQL já existe externamente.
|
# O banco PostgreSQL já existe externamente.
|
||||||
# Configure DB_HOST no .env com o IP/hostname do seu servidor PostgreSQL.
|
# Configure DB_HOST no .env com o IP/hostname do seu servidor PostgreSQL.
|
||||||
|
|
||||||
|
|||||||
28
lib/tasks/diagnostico.rake
Normal file
28
lib/tasks/diagnostico.rake
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
namespace :reem do
|
||||||
|
desc "Diagnóstico do dashboard: verifica dados da tabela externa por conta/período"
|
||||||
|
task diagnostico: :environment do
|
||||||
|
ini = ENV['INICIO'] ? Date.parse(ENV['INICIO']) : Date.current.beginning_of_month
|
||||||
|
fim = ENV['FIM'] ? Date.parse(ENV['FIM']) : Date.current
|
||||||
|
|
||||||
|
puts "================ DIAGNÓSTICO REEM ================"
|
||||||
|
puts "Período analisado: #{ini} → #{fim}"
|
||||||
|
puts "DB_EXISTING_ACCOUNT_ID: #{ENV.fetch('DB_EXISTING_ACCOUNT_ID', '95907 (default)')}"
|
||||||
|
puts "-------------------------------------------------"
|
||||||
|
puts "Entregas no período (com filtro Gade): #{Entrega.da_conta_gade.no_periodo(ini, fim).count}"
|
||||||
|
puts "Entregas no período (SEM filtro conta): #{Entrega.no_periodo(ini, fim).count}"
|
||||||
|
puts "Pagas no período (com filtro Gade): #{Entrega.da_conta_gade.pagas.no_periodo(ini, fim).count}"
|
||||||
|
puts "-------------------------------------------------"
|
||||||
|
puts "account_ids presentes na tabela:"
|
||||||
|
Entrega.group(:account_id).count.each { |acc, qtd| puts " account_id=#{acc.inspect} → #{qtd} linhas" }
|
||||||
|
puts "-------------------------------------------------"
|
||||||
|
puts "planned_date mais antiga: #{Entrega.minimum(:planned_date)}"
|
||||||
|
puts "planned_date mais recente: #{Entrega.maximum(:planned_date)}"
|
||||||
|
puts "================================================="
|
||||||
|
puts "Leitura:"
|
||||||
|
puts " • 'SEM filtro' > 0 e 'com filtro Gade' = 0 → ajuste DB_EXISTING_ACCOUNT_ID no .env"
|
||||||
|
puts " • ambos = 0 → não há dados nesse período (use as datas acima)"
|
||||||
|
rescue => e
|
||||||
|
warn "[diagnostico] Falha: #{e.class} - #{e.message}"
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user