2014-01-15 17 views
1

我試圖將fuubar gem添加到我的Gemfile中,但我使用的是rspec-rails的測試版本,並且Bundler無法爲兩者找到兼容的依賴關係。Beta版本的寶石不被Bundler識別爲解決依賴關係

# Gemfile 
gem 'rspec-rails', '~> 3.0.0.beta1' 
gem 'fuubar', '>= 1.3.2' 

Fuubar取決於rspec < 3.1.0, >= 2.14.0。從what I understand3.0.0.beta1應符合該要求。我得到的錯誤如下:

Bundler could not find compatible versions for gem "rspec-mocks": 
    In Gemfile: 
    rspec (< 3.1.0, >= 2.14.0) x86-mingw32 depends on 
     rspec-mocks (~> 2.14.0) x86-mingw32 

    rspec-rails (~> 3.0.0.beta1) ruby depends on 
     rspec-mocks (3.0.0.beta1) 

x86-mingw32這裏的關鍵?像沒有測試版本可用於該平臺,或..?

+0

'3.0.0.beta1'滿足'<3.1.0',但你有rspec-mocks問題。將'rspec-rails'定義爲'〜> 3.0.0.beta1'是什麼原因?也許嘗試更新寶石進行測試。 – gotva

+0

測試版本具有我想要使用的功能。具體的寶石對於這個問題並不重要,我對Bundler如何試圖解決這種依賴情況感興趣,以及爲什麼它不承認['rspec 3.0.0.beta1'滿足要求](https:/ /rubygems.org/gems/rspec/versions/3.0.0.beta1)。 – lime

回答

0

嗯,我設法安裝寶石。如果我明確地將gem 'rspec', '~> 3.0.0.beta1'添加到我的Gemfile中,Bundler會愉快地安裝一切。 Bundler可能會避免預發佈版本,除非特別要求。

由於依賴關係樹被存儲在Gemfile.lock中,我甚至可以從我的Gemfile中刪除上述行,並且隨後的bundle install將成功。不知道bundle update,但我總是一個一個更新寶石。

但這並不回答爲什麼的問題。如果有人能夠解釋它,或者指出我的文檔顯示這是預期的工作方式,那麼我可以很容易地將其作爲接受的答案。