2015-07-27 28 views
5

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ı?

+4

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

+3

[# 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ş ... –

+0

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

cevap

0

Son olarak, Chris tavsiyesiyle sona erdi.

  1. rest-client için nylas https://github.com/hartator/nylas-ruby/

  2. Rahat Gemfile gereksinimlerini Çatallaşmış. rest-client için

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

  3. Rahat nylas.gemspec şartlar (1.7 idi). rest-client için

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

  4. Rahat nylas.gemspec zamanı gereksinimleri (1.7 idi). her şey hala geçiyordu,

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

  5. Ran özellikleri (1.7 idi).

  6. Gemfile

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

Herşey çalışıyor benim uygulamaya değişmiş mücevher eklendi. Hala orada daha temiz bir çözüm olup olmadığını merak ediyorum.

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