У меня есть приложение со многими дополнительными компонентами, все с их собственными сложными зависимостями. Например, некоторые развертывания могут использовать функции LDAP и должны будут загружать связанные с ldap драгоценные камни. Но многие не будут, а тем, у кого нет, не нужно устанавливать ldap-связанные драгоценные камни.Загрузка зависимостей во время выполнения с помощью bundler
Как я могу использовать Bundler для загрузки этих зависимостей в зависимости от того, какие компоненты были установлены пользователями (развертывателями)?
Я не хочу, чтобы заставить развертывателей вручную редактировать свои Gemfiles. Должна быть предусмотрена возможность включения/выключения компонентов через пользовательский интерфейс приложения.
Включение всех возможных зависимостей в Gemfile не является идеальным. Некоторые из редко используемых компонентов требуют много сложной компиляции. Другое решение может заключаться в том, чтобы приложение редактировало собственный Gemfile. Но это довольно неудобно и, вероятно, потребуется перезагрузка при каждом изменении компонентов.
Есть ли способ в Bundler динамически загружать драгоценные камни во время выполнения? Если нет, есть ли альтернативы, которые предоставляют что-то вроде песочницы Bundler, но позволяют динамическую загрузку?
[Этот запрос функция Bundler] (https://github.com/carlhuda/bundler/issues/1636) может быть уместным. –
Спасибо за эту ссылку Andrew. Я думаю, что мы будем в лучшей форме, если этот запрос функции будет выполнен (просто - будет лучше), но я бы хотел, чтобы можно было просто сделать что-то вроде вызова «Gemname» Bundle.gem внутри моего приложения. код. У меня такое ощущение, что в нынешней архитектуре Бундлера это может быть невозможно, но мне интересно, есть ли другие подобные проекты, которые могли бы сделать что-то подобное. –