Ruby: ¡Cállate IRB!
¿Harto de que en alguna ocasión IRB sea demasiado verboso? Yo si.
Por defecto, IRB siempre “escupirá” el valor resultante de evaluar la expresión introducida por el usuario. Aunque la mayoría de las veces eso está bien, hay otras en las que sacarias el corazón con una cucharilla de Té a quien tuvieras delante por la crispación que produce esta “verbosidad”.
Me refiero a situaciones del tipo “quiero recorrer un array y listar el nombre de sus elementos con puts”, ejemplo:
ArrayEnorme.each do |element| puts "#{element.name}\n" end
Con el código anterior vamos a mostrar el nombre de cada elemento del Array. Hasta aquí todo normal. El problema de evaluar esto en IRB es que, si ArrayEnorme tiene bastantes elementos y cada elemento tiene bastantes atributos, las lineas que imprimos con el nombre de cada elemento quedaran “sepultadas” por un montón de datos inutiles. Es decir, si el buffer de nuestra consola no se ha llenado con estos datos inutiles (perdiendo así las lineas con el nombre de cada elemento) tendremos que hacer scroll ad-infinitum, que para el caso es casí como si se hubierán perdido.
Para evitar esto, os presento mi solución de andar por casa:
def toggle_output context.return_format == "Output canceled\n" ? IRB.conf[:PROMPT][context.prompt_mode][:RETURN] : context.return_format = "Output canceled\n" end alias tgo toggle_output
Después de copiar las lineas anteriores en nuestro .irbrc podemos hacer pruebas:
madtrick::madtrick::$irb irb(main):001:0> 2 + 1 => 3 irb(main):002:0> toggle_output Output canceled irb(main):003:0> 2 + 1 Output canceled irb(main):004:0> toggle_output => "=> %s\n" irb(main):005:0> 2 + 1 => 3
Y voila, ya podemos callar y dar voz a IRB cuando nos plazca.
Category: programacion, ruby Comment »