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

时间:2011-07-12 14:36:01

标签: ruby rake rvm bundler

我见过很多

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

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

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

3 个答案:

答案 0 :(得分:8)

可以通过提供可选的第一个参数(即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', version更改version将迫使rake到特定的版本系统/ rvm。

欲了解更多信息,Katz'article很好地解释了二进制文件如何在rubygems下运行

答案 1 :(得分:4)

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

gem uninstall rake

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

bundle

答案 2 :(得分:-1)

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

gem uninstall rake -v=version

然后安装另一个版本

gem install rake -v=version