Вложение Ruby драгоценных камней в проект Rails

Как мне создать gem-проект, вложенный в мой текущий Rails-проект?

У меня есть проект Rails с несколькими частями, которые легко могут быть драгоценными камнями. Я хотел бы извлечь эти части в драгоценные камни, но не выходить из текущего проекта Rails. Создание новых репозиториев с исходным кодом для драгоценных камней добавляет дополнительную сложность, которую проект или организация не готовы или не в состоянии обработать. Эти сложности будут преодолены в какой-то момент, и я хотел бы быть готовым.

Пока что я могу думать только об этих предметах.

  1. Переместить код в один корневой каталог. Я предполагаю, что это будет в vendor дорожка
  2. Создать <something>.gemspec
  3. Ссылка на жемчужину в Gemfile приложения Rails

    gem 'my_lib_code', path: 'vendor/my_lib_code'
    

Что еще мне нужно сделать? Я уверен, что упускаю что-то важное.


Если бы это был проект ac, я бы создал другую разделяемую библиотеку, которую выполнил бы процесс make. Или если это где aC# проект я бы сделал .dll, Для Java я бы...

Я уверен, что Ruby может делать то же самое, что и все остальные языки. Что-то, что на полпути между обычно полностью извлеченным гемом и просто некоторым размещением кода в моем lib дорожка.

1 ответ

Это идеальный подход для компонентной архитектуры.

У вас есть один репозиторий, один набор тестов и один процесс развертывания, и в то же время вы "вынуждены" думать о чистых интерфейсах и разделении проблем.

Конечно, если вы планируете поделиться этой функциональностью с другими проектами, Gem с внешним размещением (но не обязательно общедоступный) будет работать лучше.

В плане реализации вы можете получить некоторые изящные идеи из выступления Стефана Хагеманна на RailsConf этого года: " Начните с компонентных Rails-приложений!"

Другие вопросы по тегам