2014-06-17 194 views
0

我有一個衝突的依賴性:衝突的依賴

Gem A depends on Gem B 2.0 

Gem C depends on Gem B 1.5 

我是否應該強迫這樣的:

gem 'B', '~> 1.5' 

我所有的其他的寶石使用寶石B酒店有2.5(儘管如此,我可以在Gemfile中做這樣的事情嗎?:

gem 'B' # 2.5 

gem 'A', dependency: 'b 2.0' 
gem 'C', dependency: 'b 1.5' 

# gems happily use B 2.5 

更新,我確切的問題:

rails-observers(>=0) ruby 
    activemodel(~> 4.0) 

jquery-scrollto-rails(>=) ruby 
    activemodel(~> 3.1.0) 

我的Gemfile完全不enfocring的依賴。沒有版本號選項。

bundle install 

完成不錯,但

bundle update 

結果顯示在上面

+0

你能指定你確切的問題是什麼?我假設你可以完全省略版本號,讓Bundler爲你處理。 – netmute

回答

0

叉jQuery的scrollto-軌誤差在GitHub和升級的版本。運行它的測試套件。如果它運行提出拉請求,直到它被接受,使用你的github版本。

如果它沒有運行,然後 -

不要抱怨,修復;)

編輯

它們有一個支持railties 3 一下添加到較新版本的Gemfile

gem 'jquery-scrollto-rails', '~> 1.4.3' 

然後運行$ bundle install

rubygems

注:

我建議您始終使用的版本規格在你的Gemfile。最樂觀的策略就是將它們修正爲次要版本,例如gem 'jquery-scrollto-rails', '~> 1.4'。這對捆綁軟件來說是一個巨大的幫助,它有一個np完整的問題需要解決。根據Semver的理論,在小版本更新中不應該有不兼容的變化,你可以通過運行$ bundle update來解決你的問題。很多寶石遵循這個慣例,但有黑眼圈