Участие в разработке Ruby Gems - PullRequest
0 голосов
/ 27 февраля 2019

Мы используем Rails для большинства наших веб-проектов, и во многих случаях мы делимся кодом, который у нас есть, как, например, наш API и Gems.У нас также есть несколько проектов, которые достаточно похожи по своей природе, поэтому мы создали Engines, а затем создали хост-приложения, которые их используют.

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

Так, например:

# version on the server
gem 'our_gem', '1.1.0', source: 'https://gems.domain.net'
# local version
gem 'our_gem', path: '../our_gem'

Что происходитв том, что когда мы выполняем сборку на нашем CI-сервере, у нас появляется скрипт, который читает Gemfile и находит любые гемы, в которых наш сервер используется в качестве источника, а затем реализует их вендорство и ссылается на них как на путь производителя.

Например:

# this
gem 'our_gem', '1.1.0', source: 'https://gems.domain.net'
# becomes this
gem 'our_gem', path: 'vendor/gems/our_gem-1.1.0'

Однако проблема, с которой мы столкнулись, заключается в том, что когда мы находимся в процессе разработки и у нас может быть несколько функций или ошибок, которые мы хотим сообщить нашей команде QA, чтобы начать тестирование, это означает, что мы должны столкнуться с проблемой.версия каждый раз, чтобы мы могли ссылаться на нее в нашем Gemfile как на зависимость.Мы не можем сослаться на ветку из-за того, что Git-репозиторий недоступен для нашей сборки и некоторые другие ограничения.

Как команды обычно обрабатывают зависимости в разработке, у которых еще нет версии?Мы думали о том, чтобы иметь версию для разработки Gem In A Box, а затем не передавать ей версию в нашем Gemfile ...

# shared dev version of gem on our dev gem server
gem 'our_gem', source: 'https://dev.gems.domain.net'

Но проблема в том, что нам все еще нужно обновить версиюкаждый раз для того, чтобы нажать на Gem Server.Существует ли стандартный способ отправки пакета в диспетчер пакетов, при котором версия всегда одна и та же (или, что еще лучше, она не имеет версии, но размещается менеджером)?

У нас также есть такая же проблема с NPM (мы запускаем локальную версию Vedaccio).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...