No me queda claro a partir de los documentos y guías si lo siguiente es factible con Opal:
He escrito una gema de construcción que implementa una API para construir un árbol de objetos que luego se escribe en XML (o AIXM para ser exactos, un formato aeronáutico). Actualmente hay dependencias de tiempo de ejecución, pero podría deshacerme de ellas.
Hay una guía sobre la configuración de gemas para Opal , sin embargo, ¿es posible usar una gema opalizada en un proyecto de JavaScript? ¿O convertirlo en un paquete Node?
Actualmente estamos en un proceso de diseño de una buena integración de NPM. Pero a partir de ahora, sí. Puede compilar un proyecto Opal en un archivo .js (o .mjs) y solicitarlo en el entorno Node.
Sin embargo, un problema: Opal no se comporta bien en el entorno JS, ya que define globales, modifica prototipos, etc. - puede causar un lío, aunque la mayoría de las incompatibilidades se han solucionado a lo largo de los años (en cualquier caso, puede considerar ejecutar Código Opal en un WebWorker). El problema principal aquí es que dicho paquete incluirá inadvertidamente opal corelib, y debe tener cuidado de incluirlo solo una vez. Por lo tanto, su parte Opal de la aplicación debe compilarse en conjunto, no dividirse en varios paquetes. Trabajaremos para corregir ese problema en los próximos meses.
En cuanto a la interfaz Opal de JS, debería echar un vistazo a esto: https://github.com/opal/opal/blob/master/docs/compiled_ruby.md#ruby-from-javascript