Estoy trabajando en una aplicación Sinatra que contiene aproximadamente 10 componentes diferentes de funcionalidad. Nos gustaría ser capaz de mezclar y combinar estos componentes en instancias independientes de la aplicación, configurados por completo de un archivo config.yaml que se ve algo como:Arquitectura para una aplicación Sinatra modular basada en componentes
components:
- route: '/chunky'
component_type: FoodLister
component_settings:
food_type: bacon
max_items: 400
- route: 'places/paris'
component_type: Mapper
component_settings:
latitude: 48.85387273165654
longitude: 2.340087890625
- route: 'places/losangeles'
component_type: Mapper
component_settings:
latitude: 34.043556504127466
longitude: -118.23486328125
Como se puede ver, los componentes se pueden crear instancias más más de una vez, cada uno con su propia configuración contextual.
Cada componente consta de al menos una ruta, con la propiedad "ruta" del archivo de configuración utilizado para la base.
¿Cuál es la mejor manera de organizar y crear instancias del código del módulo?
Esto está cerca, pero no tiene en cuenta el enrutamiento dinámico mencionado en la pregunta. es decir, '/ grueso' no puede ser codificado. –
Buen punto. Vea la edición sobre. – bioneuralnet
¡Agradable! No había pensado en iterar dentro del código de extensión. Última nota: ¿Quiso decir 'extender' en lugar de' usar'? Parece que no puedo encontrar la documentación del 'uso'. –