你如何激活或设置默认耙?

我见过很多

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

错误。

当然,它们可以通过以下某些方法(临时或永久)解决。

 bundle exec rake 

上面的方法有效,但你总是要输入bundle exec。

它也可以通过解决

 bundle update 

但捆绑更新还会更新您的其他gem。

有人说它可以解决

 gem uninstall unwanted_rake_version 

是的,可以安装不需要的rake,但它仍然标记为已激活,因此仍然会出错。

一种解决方案是在Gemfile中明确指定rake版本,但这不是问题。 它是关于如何设置默认rake版本,或在rvm或其他类型的ruby安装中激活该特定版本?

可以通过提供可选的第一个参数(即gem版本)来激活较新版本的rake。

$ rake 0.9.2

或者,如果您有较旧版本的rake,则可以手动更新rake脚本以包含此参数(或指定所需的任何特定版本)。

rake脚本通常位于/ usr / bin / rake(或〜/ .rvm / gems / ruby​​ – #{ruby-name} / rake中,如果使用rvm)。 并指出在解析参数之前加载它们的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 gem 'rake', version更改version将强制rake到特定版本系统/ rvm宽。

有关更多信息,Katz的文章很好地解释了二进制文件如何在rubygems下运行

当我得到该错误时,它通常是在依赖于不同版本的rake的项目之间工作的结果。 一个简单的解决方法

 gem uninstall rake 

然后在您的项目目录中(假设您正在使用Bundler)

 bundle 

我总是首先卸载rake,命令如下:

 gem uninstall rake -v=version 

然后安装另一个版本

 gem install rake -v=version