2010-12-02 55 views
11

我已經更新了我的寶石。我創建了一個示例Rails應用程序,並已在我的Gemfile如下:試圖使用rspec,但得到一個錯誤,rspec-core 2.2.1已被激活,但我的Gemfile需要rspec-core 2.1.0

source 'http://rubygems.org' 

gem 'rails', '3.0.3' 
gem 'sqlite3-ruby', :require => 'sqlite3' 

group :development do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'rspec' 
    gem 'webrat', '0.7.1' 
end 

然而,當我運行「rspec的投機/」,我得到以下信息:

/home/jeff/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.7/lib/bundler/runtime.rb:27:in `block in setup': 
You have already activated rspec-core 2.2.1, but your Gemfile requires rspec-core 2.1.0. 
Consider using bundle exec. (Gem::LoadError) 

回答

9

嘗試使用bundle update rspecbundle update rspec-rails。位於根目錄中的Gemfile.lock文件可能爲每個gem指定了一個版本號。

0

Rails的小白在這裏......我下面的邁克爾·哈特爾的精彩教程...停留在layouts

試圖改變rspec的& webrat版本爲this post about rspec/webrat errors提到無濟於事。

對於rspec v2.1.0,我得到了與@ user338413相同的錯誤。

rspec的-v返回2.2.1


開發機器運行Ubuntu 10.04

解決....作品使用RSpec 2.2.0 + webrat 0.7.1,但我還是想知道爲什麼

2

我現在得到了同樣的問題。解決它嘗試:

sudo gem uninstall rspec-core -v 2.2.1 
bundle update rspec-core 

您可能需要做其他相關的寶石(如RSpec的,RSpec的護欄等)。使用該命令查看候選人:

gem list rspec 
+0

修復了這個問題。對我來說,問題在於我安裝了rspec兩次本地gems - 一次沒有指定版本號,一次指定了版本號。 使用版本號安裝的Rspec低於未安裝版本號的Rspec,並且它試圖加載rspec-support gem,其版本號高於所需版本號。 TL; DR:刪除重複的寶石 - 運行gem list rspec來查看哪些是重複的,然後刪除這些版本。 – Tebbers 2016-05-21 12:22:42

7

Sam Ritchie's和Alexey的解決方案的組合幫助我在這裏。最後,我只好:

bundle update rspec 
bundle update rspec-rails 
sudo gem uninstall rspec-mocks 
sudo gem uninstall rspec-expectations 
sudo gem uninstall rspec-core 

(提示的版本,如果沒有被輸入)

正如阿列克謝說,使用該看哪個版本太高:

gem list rspec 

(會投給你阿列克謝,但顯然我沒有足夠的「信譽」堆棧。)

0

這很容易解決:

bundle exec rspec 

將強制bundler使用您所需的項目所需的gem版本,忽略系統範圍的設置。

0

在Gemfile.lock中將版本號從2.1.0更改爲2.2.1

相關問題