2011-07-12 33 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