как активировать или установить грабли по умолчанию?

Я видел много

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

ошибки.

конечно, они могут быть решены (временно или всегда) с помощью следующих методов.

bundle exec rake

метод выше работает, но вы всегда должны ввести bundle exec.

Он также может быть решен с помощью

bundle update

но bundle update также обновляет ваши другие драгоценные камни.

некоторые говорят, что это можно решить с помощью

gem uninstall unwanted_rake_version

да, излишние грабли можно установить но он по-прежнему помечен как активированный таким образом, по-прежнему давая ошибку.

одним из решений было бы явно указать версию rake в вашем Gemfile, но это не вопрос. Это о том, как установить версию rake по умолчанию или активировать эту конкретную версию в rvm или других типах установок ruby?

3 ответов


новые версии rake можно активировать, предоставив дополнительный первый аргумент, то есть версию gem.

$ rake 0.9.2

кроме того, если у вас есть более старая версия rake, вы можете обновить сценарий rake вручную, чтобы включить этот параметр (или указать любую конкретную версию).

скрипт грабли обычно живет в /usr / bin / rake (или ~/.rvm / gems / ruby - #{ruby-name} / rake при использовании rvm). И диктует версию их, чтобы загрузить раньше анализ параматеров.

это выглядит так в моей системе.

$ 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?  then
  version = 
  ARGV.shift
end

gem 'rake', version
load Gem.bin_path('rake', 'rake', version)

важный момент-это gem 'rake', version изменение version заставит грабли к определенной версии system / rvm wide.

для получения дополнительной информации, Katz'статьи прекрасно объясняет, как двоичные файлы работают под rubygems


когда я получаю эту ошибку, обычно это результат работы между проектами, которые зависят от разных версий rake. Легко исправить это

gem uninstall rake

а затем в каталоге проекта (при условии, что вы работаете с Bundler) просто

bundle

Я всегда сначала удаляю rake, команда такая:

gem uninstall rake -v=version

затем установите другую версию

gem install rake -v=version