Syntropy es un nuevo framework web para Ruby cuyo diseño gira en torno a la organización de los controladores según el espacio de nombres de URLs de la aplicación. Este artículo analiza en detalle cómo carga los módulos y por qué su enfoque difiere del de Ruby on Rails. En Rails, la carga de archivos se automatiza mediante Zeitwerk, que utiliza la estructura de directorios como representación del espacio de nombres y asume convenciones estrictas: una clase por archivo, nombres de clases vinculados a la ubicación del fichero y dependencias implícitas. Esta filosofía funciona bien mientras el código respete esas convenciones, pero presenta inconvenientes como el riesgo de tocar objetos globales por error, la dificultad para usar singletons sin contaminar el espacio de nombres y la opacidad de las relaciones entre componentes cuando la aplicación crece.
Syntropy propone invertir esa lógica: cada módulo se evalúa en un contexto anónimo e independiente, sin efectos sobre el estado global. La palabra clave import carga explícitamente las dependencias, y export define la interfaz del módulo, que puede ser cualquier objeto: una clase, un proc, una lambda, una plantilla Papercraft o el propio módulo como singleton. Esta forma de organizar el código facilita la inyección de dependencias, simplifica las pruebas unitarias y permite recargar módulos de forma recursiva cuando un archivo cambia. Además, es posible inyectar variables de instancia —como la configuración de la aplicación o referencias a servicios globales— en el momento de cargar el módulo. En conjunto, el artículo defiende un modelo donde la modularidad, la localidad de estado y la explicitación de dependencias se imponen por diseño, como respuesta a los problemas que surgen en aplicaciones Rails de gran tamaño.
