2011-11-12 115 views
15

每當我運行rake命令(即rake routes)我得到這個錯誤:爲什麼我的環境需要我運行bundle exec?

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this. 

如果我運行bundle exec rake routes它的工作原理。

我希望能夠簡單地rake routes而不必運行bundle exec rake routes

我看過類似錯誤的其他問題,並嘗試了各種解決方案(如運行bundle update)無濟於事。

而且,在我gemfile我指定gem 'rake', '0.9.2'

有什麼建議?

+0

快速更新。最近從RailsTutorial中找到了關於是否需要使用'bundle exec'的這種解釋:「正如在3.2.1節中簡要提到的那樣,通常需要在bundle exec中加上諸如rake或rspec之類的命令,以便程序能夠精確運行(由於技術原因,唯一的例外是rails命令本身)。「此外,」只要RVM的版本號是1.11.x或更高,安裝的gems將自動在正確的位置執行Bundler環境「,因此不需要」bundle exec「前綴。 – mmichael

+0

鏈接到解釋:http://ruby.railstutorial.org/chapters/static-pages#sec-eliminating_bundle_exec – mmichael

回答

8

嘗試執行:

gem list 

你可能會看到安裝耙幾個版本。順便說一句,bundle exec正確的方式在rails應用程序的上下文中執行您的代碼,請參閱this的一個很好的解釋。所以,你可以使用別名來輸入較少。

+2

你也可以剛剛開始你的shell會話與'export RUBYOPT = -rbundler/setup',這就是所有'bundle exec'的確如此。 – yfeldblum

+0

這是非常豐富的,謝謝。 – mmichael

+1

這給了我:ruby:沒有這樣的文件加載 - bundler/setup(LoadError) –

2

如果您使用rvm。你可以嘗試以下

rvm gem list 
2

正如@lucapette說,你可能有耙的多個版本。假設你想使用0.9.2,你可以刪除0.9.2.2版本以擺脫警告,然後運行bundle install,以確保你擁有所需版本的所有gem版本(在你的情況下爲0.9.2, 0.8.7在我的例子中)。

步驟如下:

$ gem list 

*** LOCAL GEMS *** 

... 
rake (0.9.2.2, 0.8.7) 
... 

$ gem uninstall rake 

Select gem to uninstall: 
1. rake-0.8.7 
2. rake-0.9.2.2 
3. All versions 
> 2 

You have requested to uninstall the gem: 
     rake-0.9.2.2 
addressable-2.2.6 depends on [rake (>= 0.7.3)] 
... 
If you remove this gems, one or more dependencies will not be met. 
Continue with Uninstall? [Yn] Y 
Successfully uninstalled rake-0.9.2.2 
INFO: gem "0.9.2.2" is not installed 

$ bundle install 
0

您可能會看到這條消息,如果一些在你的Gemfile的寶石需要你已經安裝了一箇舊版本的耙。也許你已經更新了耙子。您通常可以通過更新寶石來修復它。運行:

bundle update 

這會使用gemfile中最新的gem更新你的包。這可能會解決耙子不兼容的問題。

相關問題