У нас есть ситуация, когда наше приложение имеет несколько модулей, которые реализуют api. Каждый из этих модулей имеет зависимость, которая, в свою очередь, зависит от правильной настройки пути каталога данных. Эти модули не должны быть сконфигурированы до тех пор, пока этот путь не будет настроен.Динамически регистрирующиеся и незарегистрированные маршруты/модули Нэнси
У нас также есть модуль, который реализует настройку и проверку конфигурации, включая настройку вышеупомянутого пути.
Мы хотели бы как-то «отключить» модули данных до тех пор, пока конфиг не будет подтвержден. Конфигурация будет подтверждена, например, при запуске мы проверяем, что каталог данных существует и действителен. Кроме того, когда пользователь сохраняет изменения через конфигурационный модуль, мы снова сделаем это подтверждение. Чтобы повторить, пользователь устанавливает каталог данных, а затем все модули данных становятся доступными. Когда пользователь устанавливает недопустимый каталог данных (или мы запускаем, а существующий - недопустимым), все модули становятся недоступными.
Мы попытались зарегистрировать обработчик на pipelines.BeforeRequest
, но это не помогло. Мы на самом деле терпим неудачу намного раньше, когда Нэнси создает экземпляры наших модулей как часть заполнения RouteCache
. Нам нужно предотвратить это создание, пока мы не сможем подтвердить, что мы настроены.
Похоже, мы должны иметь возможность сказать «использовать этот набор модулей, когда какое-либо условие истинно, и использовать этот другой набор, когда условие ложно». Как это происходит в Нэнси?