Подтвердить что ты не робот

Ошибка установки Rails "неверный gem: пакет поврежден"

Я запускаю Mac OSX 10.9.1, и я использую RVM для управления Ruby v2.0.0-p353.

Когда я пытаюсь установить Rails, я получаю эту ошибку:

Ryans-MacBook-Air-2:~ ryan$ gem install rails
ERROR:  Error installing rails:
invalid gem: package is corrupt, exception while verifying: undefined method`path2class' for #<Psych::ClassLoader:0x0000010c9d0be0> (NoMethodError) in /Users/ryan/.rvm/gems/ruby-2.0.0-p353/cache/i18n-0.6.9.gem

Вот список камней, которые я установил:

Ryans-MacBook-Air-2:~ ryan$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.3, 1.2.0)
bundler (1.5.1)
bundler-unload (1.0.2)
executable-hooks (1.2.6)
gem-wrappers (1.2.1)
io-console (0.4.2)
json (1.8.1, 1.7.7)
minitest (5.2.0, 4.3.2)
psych (2.0.2, 2.0.0)
rake (10.1.1, 0.9.6)
rdoc (4.1.0, 4.0.0)
rubygems-bundler (1.4.2)
rvm (1.11.3.8)
test-unit (2.5.5, 2.0.0.0)

Есть ли у кого-нибудь предложения по исправлению этого?

4b9b3361

Ответ 1

В последней версии больше нет метода class2path, поэтому проблему можно избежать, понизив значение Psych gem до версии 2.0.0:

gem list psych   # note down latest version
gem uninstall psych -v 2.0.5  # or whatever version you have installed

После того, как драгоценные камни установлены, вы можете снова модернизировать Psych gem, если вам это нужно.

Ответ 2

У меня была эта точная проблема с точной средой, как и вы. Я пробовал много вещей, включая ссылку, которую добавил Alexbhandari в комментарий. Я провел несколько часов и, наконец, решил назвать это броском и полностью стереть всю папку ~/.rvm и начать заново.

Предупреждение: это должно быть сделано только для новых установок без предварительного рассмотрения того, что вы можете потерять, например, как gemsets, которые вы, возможно, создали сами. Если, однако, это новая установка, вы не потеряете ничего, что не может быть заменено.

Я переименовал папку ~/.rvm, чтобы у меня была резервная копия, и снова начал процесс установки. На этот раз это сработало, и я был фактически запущен в течение приблизительно 20 минут, в отличие от часов, которые я потратил впустую, прежде чем пытаться исправить проблему.

Вы делаете это из окна терминала с помощью команды mv. Каталог ~/.rvm был в моем домашнем каталоге $:

Stephens-MacBook-Pro-2:~ Steve$ mv .rvm old.rvm

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

Ответ 3

У меня была такая же проблема, и я вспомнил, что увидел что-то на выходе терминала, что инструменты разработчика XCode устарели или не установлены (я не помню, какой). Он предложил запустить:

$ xcode-select --install

После этого я все еще сталкивался с проблемой. Я попытался удалить кеш для gemset (я использую RVM), но все еще получал ошибку. Я все еще был на ruby-2.0.0-p353. Я сделал следующее, и все работает для меня:

$ rvm get stable
$ rvm reload
$ rvm install 2.1
$ rvm gemset create your_gemset_name
# Updated my .ruby-version and .ruby-gemset files in my Rails app to use the new gemset
$ cd /to/my/rails/app
# You can run $ rvm list gemsets to make sure your app is now using the new gemset. It will point to the current one being used.
$ bundle install

С новой версией Ruby и новым gemset все работает нормально. Не уверен, что произошло с другим gemset, но я заметил это первым, когда попытался добавить драгоценный камень sidekiq и запустил $ bundle install.

Интересно, было ли это связано с недавним обновлением XCode, хотя с тех пор, как меня спросили об инструментах разработчика.

Ответ 4

Следующие шаги работали для меня -

  • Перейти к поврежденному местоположению пакета /gem

    $ cd /Users/ryan/.rvm/gems/ruby-2.0.0-p353/cache/

  • Удалить поврежденный пакет /gem

    $ rm i18n-0.6.9.gem

  • Теперь установите этот конкретный камень ИЛИ $ bundle install