Estamos a pocos días del 25 de diciembre, lo que significa versión nueva de Ruby. Ya podemos ir probando Ruby 3.3 con ruby-3.3.0-preview3. Una de las tantas novedades de esta versión es IRB 1.9, con varias cosas nuevas.

Autocompletado basado en tipos

Por defecto, IRB usa expresiones regulares para el autocompletado con IRB::RegexpCompletor. El nuevo IRB::TypeCompletion, usa análisis de tipo con Prism (parser introducido en Ruby 3.3) y RSB (el sistema de tipos presentado en Ruby 3).

Para habilitar IRB::TypeCompletion, tenemos que ejecutar IRB con el parámetro --type-completor:

$ irb --type-completor

O agregar el siguiente código en nuestro archivo ~/.irbrc:

IRB.conf[:COMPLETOR] = :type # por defecto es :regexp

Con este autocompletado activado, tenemos la ventaja de contar con autocompletado de métodos encadenados, parámetros de un bloque y más si está disponible la información del tipo. Por ejemplo en un bloque:

IRB autocompletado de bloques

Al usar los elementos de un Array como parámetro del bloque enviado a map, IRB sabe que l es un String y nos muestra el autocompletado disponible, algo que no funciona con el motor basado en expresiones regulares. Lo mismo aplica a métodos encadenados:

IRB 1.9 autocompletado con Strings

Me pareció una característica bastante interesante. En este enlace podemos ver el Pull Request de esta funcionalidad y estudiar el código. Podemos leer más información en IRB: Typed Based Completion. El autocompletado se puede deshabilitar completamente ejecutando IRB_USE_AUTOCOMPLETE=false irb, o exportando esa variable de ambiente en alguno de nuestros archivos de perfil.

Integración con debug

Hace poco escribí sobre la gema debug. A partir de IRB 1.8, tenemos integración con dicha gema en IRB. Al agregar un breakpoint en nuestro código con binding.irb, podemos activar el debugger con el comando debug y empezar a usar los comandos de esa gema, además de tener habilitados los comandos de IRB:

IRB debug

 

Cambiar los colores del diálogo de autocompletado

Otra característica nueva es el soporte para cambiar el color del fondo y el estilo de la fuente del diálogo de autocompletado con la class Reline::Face.

IRB colores

Tenemos que escribir la configuración de colores en nuestro ~/.irbrc:

Reline::Face.config(:completion_dialog) do |conf|
  conf.define :default, foreground: :black, background: :bright_green
  conf.define :enhanced, foreground: :white, background: :magenta
  conf.define :scrollbar, foreground: :magenta, background: :bright_green
end

Más información en su documentación, incluyendo los códigos de colores que podemos usar.

Otras mejoras de IRB en Ruby 3.3

  • Soporte de paginador para los comandos ls, show_source y show_cmds.
  • Información más precisa y útil en los comandos ls y show_source.

Como si fuera poco, IRB ha pasado por un refactorizado (¿refactoreo?) extensivo y recibido muchos arreglos de bugs que facilitarán mejoras a futuro.

Son buenos tiempos para programar en Ruby. Ruby 3.3 va a ser más rápido y más eficiente, como cada versión de Ruby 3 desde 3.0!

No hay comentarios en este post

Feed de comentarios

Dejar un comentario

Toasty!