2013-08-29 3 views
1

В настоящее время я создаю внутреннюю жемчужину, которая абстрагирует некоторые функциональные возможности в отношении библиотек обработки фонограмм. Цель этого жемчужина - удалить дублированный код по нескольким проектам рельсов и сделать тривиальным изменение библиотеки.Как обращаться с зависимостями драгоценных камней, которые зависят от конфигурации?

Я хочу, чтобы пользователь мог настроить, какую библиотеку использовать (resque, sidekiq, delayed job ...) в инициализаторе. Проблема в том, что жгут адаптера должен обрабатывать все зависимости.

Мой вопрос в том, что является лучшей практикой здесь? Я вижу только два варианта:

  • Включите все поддерживаемые библиотеки в зависимости от аксессуаров. (Будет установлено ненужное программное обеспечение на сервере.)

  • Не включайте какую-либо зависимость и укажите пользователю, чтобы включить определенные зависимости в их gemfile в соответствии с активной конфигурацией. (Дублирует код и может привести к ошибкам человека.)

Какой вариант вы считаете лучшей практикой? Есть ли другой вариант, который мне не хватает?

ответ

4
  1. Загрузка и установка вашего драгоценного камня не должны автоматически загружать все поддерживаемые библиотеки.
  2. Установка вашего драгоценного камня должна предоставить команду командной строки для установки параметров (например, если ваш драгоценный камень равен foo, то что-то вроде foo setup bar-option). Запуск этой команды должен создать файл конфигурации, рассказывающий, какую библиотеку вы выбрали, а также загрузить необходимые библиотеки в этот момент.
  3. Когда используется ваш драгоценный камень, он должен обратиться к созданному файлу конфигурации для библиотеки, которая будет использоваться.

Я думаю, все это должно быть, вероятно, запрограммировано в файле рейка в вашем драгоценном камне.

+0

Звучит как хороший вариант. Он хорошо работает при установке драгоценного камня, единственная проблема заключается в том, что нам все еще понадобится ручная работа при переходе из одной библиотеки в другую. Тем не менее, это хорошо подходит для проблемы, спасибо! –

Смежные вопросы