Novedades de IRB en Ruby 3.3: Autocompletado basado en tipos, debug y más
Publicado el 17 de noviembre de 2023Estamos 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
:
O agregar el siguiente código en nuestro archivo ~/.irbrc
:
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:
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:
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:
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
.
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
yshow_cmds
. - Información más precisa y útil en los comandos
ls
yshow_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 comentariosDejar un comentario
<pre lang="L"> código </pre>
Siendo L un lenguaje compatible GeSHI. Más info.