Ruby 如何激活或设置默认耙?
我见过很多Ruby 如何激活或设置默认耙?,ruby,rake,rvm,bundler,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 但是bundle update也会更新您的其他gems
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
但是bundle update也会更新您的其他gems
有人说这可以通过
bundle update
gem uninstall unwanted_rake_version
是的,可以安装不需要的rake,但它仍然标记为已激活,因此仍然会出现错误
一种解决方案是在GEM文件中明确指定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',version
更改version
将强制rake到特定的版本系统/rvm范围
关于更多信息,Katz’很好地解释了二进制文件是如何在rubygems下运行的。当我遇到这个错误时,它通常是在依赖不同版本的rake的项目之间工作的结果。一个简单的解决方法是
gem uninstall rake
然后在您的项目目录中(假设您正在使用Bundler)
我总是先卸载rake,命令如下:
gem uninstall rake -v=version
然后安装另一个版本
gem install rake -v=version
作为旁注。Bundle exec是更“犹太”的策略。如果修改rake脚本,rubygems可以(也可能会)覆盖它。您可能想在安全的地方引用副本,请参见
bin_path
的语法如下:bin_path(name,exec_name=nil,*requirements)
但我仍然不明白exec_name
的目的是什么,即为什么命令不只是Gem.bin_path('rake',version)
?第一个参数是gem的名称,第二个参数是该gem中可执行文件的名称(如果为nil,则为默认值)。由于存在三个参数,因此必须指定所有参数才能同时指定版本。看,我不明白。简单地bundle
什么?它不需要任何参数吗?默认的bundle命令是install
我昨天才知道。谢谢