В настоящее время я создаю внутреннюю жемчужину, которая абстрагирует некоторые функциональные возможности в отношении библиотек обработки фонограмм. Цель этого жемчужина - удалить дублированный код по нескольким проектам рельсов и сделать тривиальным изменение библиотеки.Как обращаться с зависимостями драгоценных камней, которые зависят от конфигурации?
Я хочу, чтобы пользователь мог настроить, какую библиотеку использовать (resque, sidekiq, delayed job ...) в инициализаторе. Проблема в том, что жгут адаптера должен обрабатывать все зависимости.
Мой вопрос в том, что является лучшей практикой здесь? Я вижу только два варианта:
Включите все поддерживаемые библиотеки в зависимости от аксессуаров. (Будет установлено ненужное программное обеспечение на сервере.)
Не включайте какую-либо зависимость и укажите пользователю, чтобы включить определенные зависимости в их gemfile в соответствии с активной конфигурацией. (Дублирует код и может привести к ошибкам человека.)
Какой вариант вы считаете лучшей практикой? Есть ли другой вариант, который мне не хватает?
Звучит как хороший вариант. Он хорошо работает при установке драгоценного камня, единственная проблема заключается в том, что нам все еще понадобится ручная работа при переходе из одной библиотеки в другую. Тем не менее, это хорошо подходит для проблемы, спасибо! –