2015-07-27 14 views
5

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?

+4

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. :) –

+3

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 ... –

+0

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

Odpowiedz

0

W końcu poszedłem za radą Chrisa.

  1. Rozwidlona nylas https://github.com/hartator/nylas-ruby/

  2. bardziej ograniczone wymagania Gemfile dla rest-client. (Był 1.7)

    gem 'rest-client', '~> 1.6'

  3. Relaxed nylas.gemspec wymagania dotyczące rest-client. (Był 1.7)

    s.add_dependency(%q<rest-client>, ["~> 1.6"])

  4. bardziej ograniczone wymagania nylas.gemspec wykonywania aplikacji rest-client. (Był 1.7) specyfikacje

    s.add_runtime_dependency(%q<rest-client>, ["~> 1.6"])

  5. Ran wszystko wciąż przejściu.

  6. Dodano zmieniony gem do mojego wniosku Gemfile

    gem 'nylas', git: '[email protected]:hartator/nylas-ruby.git'

Wszystko działa. Wciąż zastanawiasz się, czy istnieje czystsze rozwiązanie.

Ref: https://github.com/hartator/nylas-ruby/commit/f7ff4076e96d8a31e223ca0f12d35811d6e9d811

Powiązane problemy