который загрузит конкретную версию драгоценного камня вместе с его зависимостями. Смотри, ма, не Бандлер.
ою фреймворк, который загружает предоставленный пользователем код ruby. Это в основном механизм плагинов. Я хочу, чтобы пользователь предоставлял код ruby, чтобы иметь возможность запрашивать собственные гемы. Я намерен включить в пакет «плагинов» каталог поставщиков с гемами.
Как я могу загрузить драгоценные камни, которые требуются плагину, не конфликтуя с драгоценными камнями моей платформы? Например, если мой фреймворк использует treetop версии 1.3.0, а плагин использует treetop 1.4.2, я хочу, чтобы каждый работал с указанной версией.
Аналогично, есть ли способ предотвратить конфликты плагинов друг с другом?
Я посмотрел на gem_plugin, песочницу _why и некоторые другие инструменты. Но я не вижу ни одной библиотеки, которая бы конкретно занималась этим делом - я предполагаю, что это было сделано раньше.
Я также посмотрел на внутренние компоненты Bundler, чтобы увидеть, как он управляет версиями гемов. Я готов сделать несколько довольно сложных вещей, если это будет необходимо. Но я все еще не уверен, как это сделать.
У меня также есть много свободы в том, как я это реализую. Поэтому, если вы думаете, что я лаю не на том дереве, скажите, пожалуйста.
Спасибо за любой совет.
ПРИМЕЧАНИЕ: Когда я писал это, мне пришло в голову, что мне нужно что-то похожее на загрузчики классов в контейнере сервлетов Java. Файл WAR может содержать файлы JAR, и загрузчик классов веб-приложения предпочтет те файлы, которые находятся в глобальном пути к классам. Есть ли в ruby какой-либо способ сегментирования rub "classpath" (то есть load_path, require и т. Д.)?