Atajos esenciales de productividad, patrones de optimización de memoria y trucos de depuración para el desarrollo diario en Rails.
Optimizaciones de Consultas y Memoria
1. pluck frente a map
pluck consulta las columnas directamente de la base de datos sin instanciar objetos de modelo ActiveRecord en memoria:
# LENTO: Instancia 10.000 objetos User en memoria
User.all.map(&:email)
# RÁPIDO: Selecciona únicamente la columna email como un array de cadenas
User.pluck(:email)
2. Procesamiento por lotes con find_each
Evita cargar tablas enormes en memoria de una sola vez:
# Carga en lotes de 1.000 registros
User.find_each(batch_size: 1000) do |user|
user.sync_with_crm
end
Atajos de Productividad en la Consola
# Acceder al resultado de la última expresión evaluada
user = User.find(1)
_ # Retorna el objeto user
# Medir el tiempo de ejecución en la consola
Benchmark.ms { 1000.times { User.count } }
# Recargar el código de la aplicación sin reiniciar la consola
reload!
Actualización de Marcas de Tiempo (touch)
Actualizar la marca de tiempo updated_at del modelo padre cuando se actualiza una asociación secundaria:
class Comment < ApplicationRecord
belongs_to :article, touch: true
end