W naszej aplikacji do szyn używamy dwóch klejnotów (urbanairship i nylas), które wymagają rest-client
. Jeden chce ~> 1.6.7
, a drugi chce ~> 1.7.1
.Jak rozwiązywać problemy z Klejnotem w programie Bundler?
Zwykłe bundle udpate
i rm Gemfile.lock; bundle install
nie działa.
Kiedy jest rozwiązywanie zależności, jesteśmy coraz to:
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies............................................................................................................................................
Bundler could not find compatible versions for gem "rest-client":
In Gemfile:
urbanairship (~> 3.0.1) ruby depends on
unirest (>= 1.1.2, ~> 1.1) ruby depends on
rest-client (~> 1.6.7) ruby
nylas (>= 0) ruby depends on
rest-client (~> 1.7) ruby
My niestety nie można użyć innej wersji obu nylas
lub urbanairship
. Jedyne rozwiązanie, które widzimy, to rozwidlenie jednego z nich i edycja .gemspec
w celu zaakceptowania tej samej wersji rest-client
.
Czy istnieje łatwiejsze rozwiązanie?
Będziesz musiał rozwidlić i zrelaksować wymagania dotyczące wersji. Jednak te wymagania zwykle istnieją z powodu określonych zachowań w wymaganych klejnotach. Rozważ odprężenie wymogu na urbanairship do '~> 1.6', a następnie' aktualizację pakietu 'i uruchom testy. Jeśli wszystko przeminie, to ja to popełnię, użyj widelca w Gemfile i prześlij żądanie ściągnięcia. :) –
Istnieją już dwie prośby o pociągnięcie do klejnotu unirest na [# 18] (https://github.com/Mashape/unirest-ruby/pull/18) i [# 22] (https://github.com/Mashape/unirest-ruby/pull/22), które rozluźniają zależności między klientem a klientem. Żaden z nich nie jest jeszcze połączony, niestety ... –
Pamiętaj, że możesz wdrożyć dowolną wersję klejnotu, używając specyfikatora źródłowego 'git' z opcją' ref', aby użyć skrótu. [Różne opcje git] (http://bundler.io/v1.3/git.html) obejmują wiele przypadków, które są przydatne w takich sytuacjach. Nie musisz rozwidlać repozytorium, chyba że musisz dokonać zmiany w pliku '.gemspec'. – tadman