Wubular - expresiones regulares corriendo Ruby en el navegador
Publicado el Jueves, 4 de septiembre de 2025Una herramienta que he usado mucho a la hora de escribir expresiones regulares es Rubular (más en Expresiones Regulares en Ruby). En agosto se presentó Wubular, una herramienta inspirada en Rubular para escribir y testear expresiones regulares en el navegador web.
Si bien Rubular es una herramienta súper práctica, tiene sus problemas. Para empezar, usa Ruby 2.5.9, una versión anciana de Ruby (el soporte para la rama 2.5 terminó en 2021), y tampoco es de código abierto. Por otra parte, sigue el modelo tradicional web de enviar un pedido POST a un servidor para parsear el resultado. Desde la versión 3.2 de Ruby, el lenguaje tiene soporte nativo para WebAssembly (Wasm). Wasm es un formato que puede ejecutarse en navegadores web, con un lenguaje de bajo nivel que corre con rendimiento cercano al código nativo.
Esto significa que usando versiones de Ruby mayor o iguales a 3.2, se puede desarrollar aplicaciones Ruby que corran en el navegador. Y esto fue lo que hicieron con Wubular. No hay pedidos al servidor, frameworks JavaScript que siempre hacen todo peor, simplemente Ruby, nativo, en el navegador.
En un blog post de Ruby Elders, aprovechan la presentación de la herramienta para comentar un poco de su diseño. Explican el diseño web clásico de Rubular: Magia Ajax que funcionaba muy bien en su momento. Pero implica carga en el servidor (cada teclazo implica ejecución en el servidor), latencia y mantenimiento del Ruby ejecutando en el servidor revisando expresiones regulares.
Cómo funciona WASM con Ruby
Quedé sorprendido de lo fácil que es programar Ruby para la web con Wasm. Definitivamente voy a usar esto en algún proyecto personal.
Con Wasm, la evaluación de las expresiones regulares puede ejecutarse directamente del lado del cliente. No hay que mantener o escalar servidores, el resultado es instantáeo (sin tener que viajar por la red), tenemos más privacidad a lo que el texto nunca sale de nuestro navegador, y se compone sólo de HTML y Ruby. En cuanto a la arquitectura, el intérprete de Ruby se compila a WebAssembly. La lógica de la aplicación se compone de archivos .rb
, que se cargan en el navegador con <script type="text/ruby' src="app.rb">
. ¡El DOM se puede manipular directamente desde clases Ruby!
Usando el código de ejemplo del post presentando Wubular, creé un archivo test.html en mi laptop, con el siguiente contenido:
<script type="text/ruby">
require "js"
document = JS.global[:document]
mensaje = "Hola Mundo desde #{RUBY_DESCRIPTION}!"
document.querySelector("body")[:innerHTML] = mensaje
</script>
Usé el script serve_dir
que tengo configurado para servir en un mini servidor web los archivos en el directorio actual (ruby -run -e httpd . -p 9090
) y abrí localhost:9090 en mi navegador para encontrarme con este texto:
En el blog comentan que todavía no hay frameworks muy pulidos para Ruby en el navegador, pero que no es necesario reinventar la rueda. La biblioteca JavaScript incluida (require "js"
) permite a Ruby interactuar con APIs nativas del navegador como document.querySelector
o addEventListener
. Hay más información en el post de Ruby Elders, y prometen otro artículo más adelante con más información sobre la interacción con el DOM, TDD con Ruby en el navegador y la velocidad.
Así que con Wubular no sólo agregué una nueva herramienta para trabajar con Ruby, también aprendí un poco sobre Wasm y lo fácil que es integrar código Ruby al navegador.
No hay comentarios en este post
Feed de comentariosDejar un comentario