Yeda AI Tips · #130

English

Rechaza los callbacks de Rails generados por IA que hacen trabajo lento

Ese callback after_save es la razón por la que tu suite de tests toca la red. Pídele a un asistente de IA que "sincronice el registro con el CRM después de guardar" y con gusto te entregará un after_save que hace una llamada HTTP — dentro de tu save, en cada save, en cada test. Compila, pasa el spec del camino feliz, y planta una dependencia lenta y frágil en la ruta más caliente de tu aplicación. Es uno de los patrones generados por IA más fáciles de rechazar en revisión, porque la regla cabe en una sola frase.

Por qué el callback generado es una trampa

Un callback no es un gancho que corre "después de la parte importante". Es parte de la parte importante:

La regla de revisión en una frase

Los callbacks son para invariantes baratos. El trabajo de red, lento o reintentable va a background jobs.

Trabajo en el callbackVeredicto
Normalizar un email, fijar un default, calcular un slugCallback — está bien
Actualizar un contador o columna desnormalizadaCallback — está bien
Llamada HTTP a cualquier API externaRechazar — background job
Enviar email, push o webhooksRechazar — background job
Cualquier cosa que pueda fallar transitoriamente y deba reintentarseRechazar — background job
Cualquier cosa más lenta que ~1 msRechazar — background job

La versión correcta es apenas más larga que la generada:

# AI-generated — reject in review
after_save :sync_to_crm
def sync_to_crm
  CrmClient.new.upsert(self)   # network call inside your save
end

# What to ask for instead
after_commit :enqueue_crm_sync, on: [:create, :update]
def enqueue_crm_sync
  CrmSyncJob.perform_later(id)
end

class CrmSyncJob < ApplicationJob
  retry_on Net::OpenTimeout, wait: 3.seconds, attempts: 5
  def perform(record_id)
    CrmClient.new.upsert(Record.find(record_id))
  end
end

Fíjate en after_commit, no after_save: se dispara solo después de que la transacción realmente hace commit, así que nunca encolas un job para un registro que se revirtió — y a esa altura una excepción ya no puede revertir nada.

Lo que ganas

Movidas de usuario avanzado

Recursos

¿Construyendo con asistentes de código con IA? Yeda AI diseña, audita y entrega sistemas LLM de producción.

Habla con nosotros · Lee el blog · Read in English