Мы привыкли задавать гемы с открытым исходным кодом в Gemfile с помощью pessimisti c versioning:
gem 'sidekiq', '~> 5.2.7'
gem 'rspec', '~> 3.6'
Это здорово, так как Bundler подхватит rspe c v3.6.2 (et c.), Но не v4.0. Это именно то, что я хочу.
У меня есть несколько наших собственных драгоценных камней, обслуживаемых из частного источника git_s:
git_source(:stash) { |repo| "ssh://private@corporate.example.com:9999/#{repo}.git" }
gem 'flavor-it, tag: 'v2.0.3', stash: 'scents/flavor-it-gem'
В flavor-it-gem
мы используем semanti c версия в файле gemspe c, такая как '2.0.3'.
В git мы помечаем релизы коммитами с такими тегами, как 'v2.0.3'.
Я только что выпустил v2.0.4 ... тривиальный релиз патча. Я бы хотел, чтобы все наши локальные приложения автоматически выбирали этот новый драгоценный камень, не обновляя гемфайл в каждом.
Я хотел бы сделать что-то вроде этого:
gem 'flavor-it, tag: '~> v2.0', stash: 'scents/flavor-it-gem'
... но это не работает. Тэги должны точно совпадать ... нет пессимистического c совпадения версий или даже сравнения (>=
).
Есть ли способ пессимистически (семантически) указать диапазон версий гемов в tag
? Или я собираюсь пойти по этому нелегкому пути, и мне следует использовать что-то отличное от tag:
для версий моего собственного частного драгоценного камня?
Я пытался сбросить ключ tag:
в пользу спецификация обычной версии:
gem 'flavor-it, '~> 2.0', stash: 'scents/flavor-it-gem'
... но затем я получаю:
Could not find gem 'flavor_it (~> 2.0)' in ssh://git@stash.sdlc.appriss.com:7999/scents/flavor_it_gem.git (at master@53b6071).
The source does not contain any versions of 'flavor_it'
Так что, возможно, реальный вопрос, который я должен здесь задать, это ... Как мне показать ruby Gem версии в git репо? Если это имеет значение, мы используем Atlassian Bitbucket в качестве нашего git репо.
Есть предложения по созданию этой работы ... или по совершенно другому подходу к этой проблеме?