Entrada

Trucos de consola Ruby/Rails que siempre olvido

Trucos de consola Ruby/Rails que siempre olvido

Compilado de trucos que uso en irb y rails console. La mayoría son one-liners para investigar bugs, medir performance o simplemente hacer el terminal más agradable.

Listar el historial de IRB

1
puts Readline::HISTORY.to_a

Útil cuando sabés que escribiste algo correcto en una sesión anterior pero no recordás exactamente qué era.

1
include ActionView::Helpers::UrlHelper

Después de eso, link_to "x", "/y" funciona en rails console.

Inspeccionar una ruta como la ve la app

1
app.users_path

El objeto app en rails console expone los helpers de ruta como si estuvieras dentro de un request.

Ver el SQL de ActiveRecord en la consola

1
ActiveRecord::Base.logger = Logger.new STDOUT

A partir de ahí, cada User.where(...) imprime el SQL generado. Útil para entender N+1 e índices en el momento.

Listar todas las variables de entorno

1
ENV

Sí, es solo eso. Pero es exactamente lo que uno olvida en producción.

Guardar un objeto en JSON para debugear con calma

1
File.write('public/debug_object.json', offers.to_json)

Después lo abro en el editor con formato para entender estructuras grandes.

Medir el tiempo de una línea

1
2
3
puts Benchmark.measure {
  y = User.all.pluck(:id);
}

Benchmark.measure retorna user/system/total/real time. Una buena primera aproximación antes de recurrir a un profiler.

Buscar memory leaks con memory_profiler

1
2
3
4
5
6
require 'memory_profiler'

MemoryProfiler.start
# ... ejecutá aquí lo que querés medir ...
report = MemoryProfiler.stop
report.pretty_print(scale_bytes: true, to_file: 'log/memory_profile.txt')

Genera un reporte con los hotspots de alocación. Ideal para debugear jobs que crecen en RAM.

Colores en IRB sin ninguna gem

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def red(str)
  "\033[31m#{str}\033[0m"
end

def green(str)
  "\033[32m#{str}\033[0m"
end

def blue(str)
  "\033[34m#{str}\033[0m"
end

def yellow(str)
  "\033[33m#{str}\033[0m"
end

Pegá esto en ~/.irbrc y usá puts green("ok") para resaltar la salida en scripts largos.

Desinstalar todas las gems de la máquina

1
for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done

Útil cuando el sistema de gems se convierte en un caos y querés empezar de cero. Cuidado en máquinas con Ruby del sistema — preferí hacer esto dentro de un entorno rbenv/asdf.

Dónde encontrar gems para un problema nuevo

ruby-toolbox.com/categories — tiene ranking de adopción y actividad por categoría, ayuda a evitar gems abandonadas.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.