Есть ли другой способ обойти некорректное требование ошибок YAML :: Syck :: DefaultKey, чтобы затем обновить RubyGems? - PullRequest
3 голосов
/ 15 февраля 2012

Я получаю Invalid gemspec in [path/to/vendor/bundle/spree_api-1.0.0.gemspec]: Illformed requirement ["#<YAML::Syck::DefaultKey:0x2ac381f81938> 1.0.0"] за несколько драгоценных камней (все Шпрее и его требования к Шпрее_ *).Я сообщил о проблеме как с spree (который, я подозреваю, изменил их линию сборки; так и с хостером site5, который имеет устаревшую версию RubyGems, 1.6.2)

Несколько *У 1005 * вопросов для stackoverflow есть решения для этого, но ни один из них не применим ко мне.

  1. Я не могу использовать RVM для обновления до других версий Ruby, поскольку на хосте (v) установлен пассажир, который AFAIK позволяет использовать только одну версию Ruby.У меня нет доступа к Установке Пассажира, кроме как через .htaccess в моей папке public.
  2. Я не могу сделать gem update --system, потому что для этого требуется sudo , что я и не надеваю

Мне любопытно, почему возникает эта ошибка: можно ли что-то решить, собрав сам гем (например, из git), а не выбрав его с rubygems.org.

Может быть, это что-то, что можно решить, упаковав драгоценные камни на моей машине для разработки?Я не сталкиваюсь с этой проблемой, и, кроме версии RubyGems, на моем компьютере разработчика установлена ​​точно такая же версия Ruby (там я могу использовать rvm просто отлично).

1 Ответ

3 голосов
/ 18 июля 2012

Возможно, вы уже нашли способ обойти это, но вот хакерский способ исправить это, если у вас есть права на запись изменений.

cd /path/to/vendor/bundle/ и откройте spree_api-1.0.0.gemspec в текстовом редакторе.

Удалить везде, где написано #<YAML::Syck::DefaultKey:...>, и заменить его на >=.

Сохраните его, вернитесь в каталог приложений Rails и запустите bundle install

...