2014-03-28 24 views
4

我試圖運行rake db:migrate本地,但我發現下面的錯誤:Gem :: LoadError:Rake?

Gem::LoadError: You have already activated rake 10.2.2, but your Gemfile requires rake 10.1.1. Using bundle exec may solve this. 

不知道爲什麼發生這種情況?它沒有出現在哪裏。

任何想法如何解決這個問題?

乾杯

回答

13

您可以刪除您的Gemfile.lock。然後運行bundle install,bundler會用正確的rake重新創建更新的Gemfile.lock

我剛剛做到了這一點,併爲我工作。

+4

你需要小心使用這個方法,因爲它可能會改變項目中其他依賴項的版本。通常這不是問題,但您應該意識到它可能會帶來不兼容或回退 –

+1

這就是將版本寫入Gemfile的原因。在其他地方部署時會發生同樣的問題。 – DonPaulie

+0

當我刪除它時,它會在不到一秒的時間內自動重新創建 – Kunok

4

照它說的去做。呼叫耙作爲

bundle exec rake 

或者alterantively,運行捆綁是這樣的:

bundle install --binstubs 

然後:

bin/rake 

發生這種情況,因爲是不同版本的rake安裝在你係統,並且默認加載錯誤的系統。

1

嘗試運行bundle exec rake db:migrate,看看是否適合你。

您似乎安裝了rake的多個版本。請gem list來確定是否屬於這種情況。

根據不同,您可能需要使用gem uninstall rake來卸載一個版本。

0

這些都沒有爲我工作,但我找到了一個修復。在您正在創建的應用程序文件夾中(您可以在其中找到應用程序文件夾。)打開「Gemfile.lock」查找「rake 10.1.1」(只需使用find或search),將其更改爲10.2.2,然後保存即可。祝你好運

+2

你不應該編輯Gemfile.lock – mwallace

+0

我同意你的看法,但是效果很好 –

0

我認爲更新所有Gemfile.lock是危險的,特別是當你有許多寶石沒有特定的版本。有時候,當你更新寶石時,一些行爲會發生變化,並且發現它發生的原因真的很煩人。

至於我自己,我有同樣的問題和解決方案是修改的Gemfile:

gem 'rake', "~> 10.2.2" 

gem 'rake', "~> 11.1.2" 

,然後運行

bundle update rake 
0

我沒有/不要在我的Gemfile中指定gem 'rake',所以我只是跑bundle update rake,它正確地更新了Gemf ile.lock。