Mam aplikację Sinatra, która wymaga innego klejnotu, który rozwijam lokalnie. Mam problem z skonfigurowaniem programu Bundler do używania mojego lokalnego kodu gem podczas tworzenia, ale mój kod z klejnotem w produkcji.W jaki sposób Bundler/Gemfile może być skonfigurowany do korzystania z różnych źródeł klejnotów podczas programowania?
Idealnie mógłby zrobić coś takiego, ale Bundler nie pozwalają określić ten sam klejnot dwukrotnie:
# Doesn't work:
group :development do
gem 'awesome', :path => "~/code/awesome"
end
group :production do
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
end
w międzyczasie mam uciekają się do ręcznie vendoring gem & uaktualniające źródło gem w Gemfile za każdym razem, kiedy uruchamiam, co jest dość kłopotliwe. Mój workflow jest taka:
- punkt do mojego lokalnego gem w trakcie rozwoju (
gem 'awesome', :path => "~/code/awesome"
) - Gdy wszystko jest gotowe do wdrożenia, rozpakowywanie gem do
vendor/gems
- aktualizacji Gemfile aby wskazać vendored gem (
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
) - Run
bundle install
(zaktualizować Gemfile.lock) Kod - Deploy
- Powrót do kroku 1.
Co za kłopot! Chciałbym zrobić coś czystszego niż po prostu napisanie zadań Rake, aby zautomatyzować moją obecną konfigurację.
Jaki jest najlepszy przepływ pracy dla tego scenariusza?
Próbowałem tego, co sugeruje ten artykuł wcześniej, i w większości przypadków jest OK. Problem polega na tym, że po uruchomieniu Gemfile.lock odwołuje się do mojego lokalnego klejnotu (zobacz jego ostatnie dwie próbki kodu). Sądzę, że mógłbym lokalnie instalować klejnoty produkcyjne, a następnie wdrożyć lub wykluczyć Gemfile.lock z Git całkowicie ... ale nie jestem pewien, czy któraś z tych opcji jest najlepszą metodą. –
Tak, chcę osiągnąć to samo, ale wydaje się, że nie ma na to sposobu. –