У меня есть приложение со множеством дополнительных компонентов, все со своими сложными зависимостями. Например, в некоторых развертываниях может потребоваться использовать функциональные возможности LDAP, и для них потребуется загружать гемы, связанные с ldap. Но многие этого не сделают, а те, кому это не нужно, не должны устанавливать гемы, связанные с ldap.
Как я могу использовать Bundler для загрузки этих зависимостей в зависимости от того, какие компоненты включены пользователями (развертывателями)?
Я не хочу заставлять развертывателей вручную редактировать свои Gemfiles. Должна быть предусмотрена возможность включения / отключения компонентов через пользовательский интерфейс приложения.
Просто включение всех возможных зависимостей в Gemfile не является идеальным. Некоторые из редко используемых компонентов требуют много сложной нативной компиляции. Другое решение может состоять в том, чтобы приложение редактировало свой собственный Gemfile. Но это немного неудобно и, вероятно, потребует перезагрузки каждый раз, когда меняются компоненты.
Есть ли в Bundler способ динамически загружать гемы во время выполнения? Если нет, есть ли альтернативы, которые предоставляют что-то вроде песочницы Bundler, но допускают динамическую загрузку?