Как вы обновляете rubygems с помощью rvm и ree?

Как вы обновляете rubygems под rvm, если ree является вашей виртуальной машиной по умолчанию (на Snow Leopard)? Я делаю:

$ rvm ree gem update --system

В результате все выглядит так, как будто все прошло нормально:

Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.7
Updating RubyGems to 1.3.7
Installing RubyGems 1.3.7
RubyGems 1.3.7 installed

[...]

RubyGems installed the following executables:
        /Users/douglassellers/.rvm/rubies/ree-1.8.7-2010.02/bin/gem

но когда я запускаю gem --version, он все еще говорит 1.3.5. Выполнение which gem указывает на новую версию gem.

Кто-нибудь знает, как заставить rubygems обновляться с помощью RVM?


person Douglas Sellers    schedule 20.08.2010    source источник
comment
Вы проверили, что ree является текущим выбранным рубином rvm? например rvm use ree, затем gem --version. Я знаю, это звучит глупо, но ошибка, с которой я сталкивался раньше :-(   -  person Brian    schedule 21.08.2010
comment
Я проверил это. Самое странное, что ruby ​​gems, кажется, думает, что обновляет правильный файл. В нем говорится об обновлении ~/.rvm/rubies/ree-1.8.7-2010.02/bin/gem, и когда я делаю выбор драгоценного камня, он указывает на ~/.rvm/rubies/ree-1.8.7-2010.02/bin/gem. Значит, в требуемом пути должна быть другая версия драгоценного камня? Хотя я не вижу ни одного.   -  person Douglas Sellers    schedule 23.08.2010


Ответы (4)


Проблема, я думаю, заключается в начальной команде (или в том, что вы ожидаете от этой команды):

$ rvm ree gem update --system

Это говорит rvm передать gem update --system gem под ree, но не переключает вас на этот конкретный интерпретатор Ruby. Вы продолжаете использовать любой интерпретатор, который вы установили в этой оболочке (будь то по умолчанию или потому, что вы переключились вручную ранее в сеансе оболочки).

Например, мой интерпретатор по умолчанию — Ruby 1.9.2. Если я передам эту команду: rvm 1.9.1 gem install pony, то гем Pony будет установлен для Ruby 1.9.1. Однако я все еще использую Ruby 1.9.2 после завершения этой установки. Если я ввожу irb и пробую require 'pony', я получаю сообщение об ошибке загрузки. Если я запускаю rvm 1.9.1, а затем ввожу irb, Pony устанавливается и загружается нормально.

Итак, как говорит Брайан в своем комментарии к вашему сообщению, вы можете переключаться вручную с помощью rvm use ree. В качестве альтернативы вы можете переключить свою начальную команду на это:

$ rvm ree
$ gem update --system
$ gem --version
person Telemachus    schedule 21.08.2010
comment
Это дает те же результаты, что и в исходном вопросе. Все говорит, что он обновляется, и gem говорит, что он обновил правильный файл, но когда вы запускаете gem --version, он все еще говорит о более старой версии. Когда я запускаю драгоценный камень, он указывает на тот же файл, который rubygems только что сообщил об обновлении. - person Douglas Sellers; 23.08.2010
comment
Обратите внимание, что rvm gem ... был удален, попробуйте вместо него gem update --system или rvm all do gem update --system. (см.: 'использование rvm') - person Akshaydeep Giri; 24.01.2014

Теперь вы можете просто сделать:

rvm rubygems latest

Или вы можете определить, какие rubygems вам действительно нужны. https://rvm.io/rubies/rubygems/

person shingara    schedule 12.09.2011

rvm предложил мне использовать что-то вроде этого:

rvm ruby-1.9.3-p327@mygemset do gem update --system
person Nickolay Kondratenko    schedule 09.04.2013

Это необычная проблема. Если проблема еще не решена, рассмотрите возможность использования

rvm --default use ree
which ruby
which gem

это должно показать вам, если вы используете правильную версию.
устанавливайте драгоценные камни либо с помощью rvm, либо напрямую.

person quantboy    schedule 15.01.2011