Я работаю над приложением Sinatra, которое содержит около 10 различных компонентов функциональности. Мы хотели бы иметь возможность смешивать и сопоставлять эти компоненты с отдельными экземплярами приложения, полностью настраиваемыми из файла config.yaml, который выглядит примерно так:
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
Как вы можете видеть, компоненты могут быть созданы несколько раз, каждый со своими контекстными настройками.
Каждый компонент состоит по крайней мере из одного маршрута с свойством "route" из файла конфигурации, используемого для базы.
Каков наилучший способ организовать и создать экземпляр кода модуля?