2011-07-12 35 views
8

我見過很多你如何激活或設置默認耙子?

You have already activated rake 0.9.x, but your Gemfile requires rake 0.x.x 

錯誤。

當然,他們可以通過以下一些方法來解決(暫時或總是)。

bundle exec rake 

上述方法可行,但您始終必須鍵入bundle exec。

它也可以通過

bundle update 

來解決,但包的更新也更新您的其他寶石。

有人說,它可以通過

gem uninstall unwanted_rake_version 

是的,不必要的耙可以安裝可以解決,但它仍被標記爲如此活化,仍然給錯誤。

一個解決方案是明確指定您的Gemfile中的耙式版本,但這不是問題。關於如何設置默認rake版本,或者在rvm或其他類型的ruby安裝中激活該特定版本?

回答

8

可以通過提供可選的第一個參數來激活更新版本的rake,這是寶石版本。

$ rake 0.9.2

或者,如果你有耙的舊版本,你可以手動更新耙腳本以包括此參數(或指定任何你想要的特定版本)。如果使用rvm,rake腳本通常位於/ usr/bin/rake(或〜/ .rvm/gems/ruby​​ - #{ruby-name}/rake)。並決定在解析參數之前加載它們的gem版本。

它在我的系統上看起來像這樣。

$ cat ~/.rvm/gems/ruby-1.9.2-p180/bin/rake 

#!/home/tomcat/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
# 
# This file was generated by RubyGems. 
# 
# The application 'rake' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0" 

if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then 
    version = $1 
    ARGV.shift 
end 

gem 'rake', version 
load Gem.bin_path('rake', 'rake', version) 

最重要的一點是gem 'rake', version改變version將迫使耙到特定版本的系統/ RVM寬。

欲瞭解更多信息,卡茨」 article很好地解釋瞭如何在二進制文件的RubyGems

+0

作爲一個側面說明。 Bundle exec是更「潔淨」的策略。如果你修改了rake腳本,ruby-gems可以(也可能會)覆蓋它。您可能想要在某處安全地引用副本 – diedthreetimes

3

當我得到這個錯誤,它通常依賴於不同版本耙的項目之間合作的結果運行。一個簡單的辦法是

gem uninstall rake 

然後在你的項目目錄(假設你與捆紮機工作),只需

bundle 
-1

我總是先卸載耙,命令如下:

gem uninstall rake -v=version 

然後安裝另一個版本

gem install rake -v=version