Raylarımızda, rest-client
gerektiren iki mücevher (urbanairship ve nylas) kullanıyoruz. Biri ~> 1.6.7
ve diğeri ~> 1.7.1
'u istiyor.Bundler'de Gem uyumlu sorunları nasıl çözülür?
Her zamanki gibi bundle udpate
ve rm Gemfile.lock; bundle install
çalışmıyor. bağımlılıkları çözerken
, bu alıyorsanız:
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
Biz maalesef nylas
veya urbanairship
ya farklı bir sürümünü kullanamazsınız. Gördüğümüz tek çözüm, ikisinden birini iptal etmek ve rest-client
'un aynı sürümünü kabul etmek için .gemspec
'u düzenlemek.
Daha kolay bir çözüm var mı?
Sen sürüm gereksinimlerini çatal ve dinlenmek gerekir. Bununla birlikte, bu gereksinimler genellikle gerekli mücevherlerdeki spesifik davranışlardan dolayı mevcuttur. Urbanairship üzerindeki gereksinimi "~> 1,6" ve ardından "güncelleştirme paketini" gevşetmeyi ve testlerini çalıştırmayı düşünün. Eğer her şey geçerse, bunu yapardım, çatalını Gemfile'da kullan ve bir çek isteği gönder. :) –
[# 18] [https://github.com/Mashape/unirest-ruby/pull/18] ve [# 22] (https://github.com) 'da en mütevazı gemiler için iki çekme isteği zaten var./Mashape/unirest-ruby/pull/22) hem de dinlenme-istemci bağımlılıklarını gevşetir. Hiçbiri henüz maalesef birleştirilmemiş ... –
Kullanmaya hash için 'ref' seçeneği ile' git' kaynak belirticisini kullanarak bir gemin rasgele sürümünü dağıtabileceğinizi unutmayın. [Çeşitli 'git' seçenekleri] (http://bundler.io/v1.3/git.html), bu gibi durumlarda kullanışlı olan birçok vakayı kapsar. '.gemspec' dosyasında bir değişiklik yapmanız gerekmedikçe, depoyu çatallamanız gerekmez. – tadman