Вложение Ruby драгоценных камней в проект Rails
Как мне создать gem-проект, вложенный в мой текущий Rails-проект?
У меня есть проект Rails с несколькими частями, которые легко могут быть драгоценными камнями. Я хотел бы извлечь эти части в драгоценные камни, но не выходить из текущего проекта Rails. Создание новых репозиториев с исходным кодом для драгоценных камней добавляет дополнительную сложность, которую проект или организация не готовы или не в состоянии обработать. Эти сложности будут преодолены в какой-то момент, и я хотел бы быть готовым.
Пока что я могу думать только об этих предметах.
- Переместить код в один корневой каталог. Я предполагаю, что это будет в
vendor
дорожка - Создать
<something>.gemspec
Ссылка на жемчужину в
Gemfile
приложения Railsgem 'my_lib_code', path: 'vendor/my_lib_code'
Что еще мне нужно сделать? Я уверен, что упускаю что-то важное.
Если бы это был проект ac, я бы создал другую разделяемую библиотеку, которую выполнил бы процесс make. Или если это где aC# проект я бы сделал .dll
, Для Java я бы...
Я уверен, что Ruby может делать то же самое, что и все остальные языки. Что-то, что на полпути между обычно полностью извлеченным гемом и просто некоторым размещением кода в моем lib
дорожка.
1 ответ
Это идеальный подход для компонентной архитектуры.
У вас есть один репозиторий, один набор тестов и один процесс развертывания, и в то же время вы "вынуждены" думать о чистых интерфейсах и разделении проблем.
Конечно, если вы планируете поделиться этой функциональностью с другими проектами, Gem с внешним размещением (но не обязательно общедоступный) будет работать лучше.
В плане реализации вы можете получить некоторые изящные идеи из выступления Стефана Хагеманна на RailsConf этого года: " Начните с компонентных Rails-приложений!"