Desembaraçando a dependência do Colima nos deploys do Kamal
O daemon Docker do meu Mac era uma peça estrutural dos deploys de produção. Build-once-deploy-many com o Kamal 2, e as três suposições da pesquisa que estavam erradas.
Notas sobre o software, os jogos e a música que saem da Imperfect Systems.
Feed RSSO daemon Docker do meu Mac era uma peça estrutural dos deploys de produção. Build-once-deploy-many com o Kamal 2, e as três suposições da pesquisa que estavam erradas.
Detectando publicações no Medium via polling do feed RSS, os quatro headers obrigatórios do LinkedIn, e a regra de acrônimo do Zeitwerk que quebrou o rollback de migration no CI.
Fazendo os títulos do painel linkarem para os posts ao vivo: um prefixo de caminho configurável, uma trava por pub_date contra links quebrados, e uma coluna do spec que descartei.
Busca do Pexels na própria página com Turbo Frames, a pegadinha do cabeçalho de autenticação que dá 401 em tokens Bearer, e um model singleton de configurações pra chave de API.
Um botão de publicar no Medium sobre uma API descontinuada mas funcional: Net::HTTP injetável, renderização de markdown sob demanda, e uma máquina de estados dividida entre job e service.
Conectando o Turbo Streams para que os jobs de scan atualizem a página enquanto rodam, e a pegadinha do adapter async no cable.yml que engolia todo broadcast vindo do worker.
Movendo o scan do GitHub para um job em segundo plano depois que ele ultrapassou o timeout do proxy, e a pegadinha da ordem LIFO do rescue_from que quebrou meu caminho de descarte.
Fazendo todo merge disparar deploy automático para staging: um runner self-hosted, quatro paredes seguidas, e a pegadinha dos secrets do Kamal que demorou mais para ser decifrada.
Escrevendo as regras do que fazer quando o CI fica vermelho num projeto Rails solo, e a limitação do GitHub que transformou o gate de merge num comentário estrutural.
A requisição GraphQL que eu planejava interceptar nunca dispara: o Medium renderiza seu estado Apollo no servidor. Três becos sem saída e a correção com wrappedJSObject que foi para produção.
Página 11 de 12