poy*_*ode 9 ruby rake bundler rvm
我见过很多
You have already activated rake 0.9.x, but your Gemfile requires rake 0.x.x
Run Code Online (Sandbox Code Playgroud)
错误.
当然,它们可以通过以下某些方法(临时或永久)解决.
bundle exec rake
Run Code Online (Sandbox Code Playgroud)
上面的方法有效,但你总是要输入bundle exec.
它也可以通过解决
bundle update
Run Code Online (Sandbox Code Playgroud)
但捆绑更新还会更新您的其他宝石.
有人说它可以解决
gem uninstall unwanted_rake_version
Run Code Online (Sandbox Code Playgroud)
是的,可以安装不需要的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)
Run Code Online (Sandbox Code Playgroud)
重要的是gem 'rake', version改变version将迫使rake到特定的版本系统/ rvm宽.
有关更多信息,Katz的文章很好地解释了二进制文件如何在rubygems下运行
当我收到该错误时,通常是由于在依赖于不同版本的 rake 的项目之间工作所致。一个简单的解决方法是
gem uninstall rake
Run Code Online (Sandbox Code Playgroud)
然后在您的项目目录中(假设您正在使用 Bundler)
bundle
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12314 次 |
| 最近记录: |