Как справиться с устаревшим предупреждением о драгоценных камнях (SourceIndex # all_gems)?
Получил это сообщение сегодня после запуска bundle update
:
$ bundle update
NOTE: Gem::SourceIndex#all_gems is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::SourceIndex#all_gems called from /Users/meltemi/.rvm/gems/[email protected]/gems/bundler-1.0.13/lib/bundler/rubygems_integration.rb:256
.
Кто-нибудь знает, что это значит и как его решить?
Примечание. Это среда Rails 3.0.7.
Ответы
Ответ 1
У меня были те же ошибки для кучи моих драгоценных камней в среде, отличной от Rails, когда я обновился до rubygems 1.8.0. Я получил предупреждения в любое время, когда требуется рубигемы. Оглядываясь на "Сеть", похоже, что это может быть проблемой и с rubygems 1.7.x, но у меня никогда не было одной из этих версий, поэтому я не уверен. Я исправил это, выполнив:
gem pristine --all --no-extensions
Мне приходилось запускать его несколько раз - он сохранял ошибку (но обычно не в том же месте от запуска до запуска). В конце концов он получил достаточно далеко, чтобы он обратился к большинству моих драгоценных камней.
Было несколько драгоценных камней, которые не получили правильную регенерацию их спецификаций (json и сиквел, особенно в моем случае), потому что им нужно было построить расширение. (Выход команды gem показал, что он пропускал их, хотя было легко пропустить это сообщение среди всех предупреждений об устаревании.) Для этих драгоценных камней я их удалил, а затем снова установил их (ранее они были установлены поставщиком в rubygems 1.5.x), и это фиксировало остальные предупреждения. Возможно, я мог начать с этого плана атаки изначально, но я не пробовал.
Ответ 2
Он был вызван из драгоценного камня Бундлера. Попробуйте обновить пакет, чтобы узнать, помогает ли он
sudo gem update bundler
Ответ 3
Драйвер Pry напрямую использует API rubygems и не может быть исправлен, просто выполнив gem pristine --all
к сожалению.
Я искал жемчужину Pry и добавил исправления, используя не-устаревшие вызовы API. В ожидании слияния, чтобы справиться, вот вилка: https://github.com/dvdplm/pry
Ответ 4
Я обновил bundler ('gem update bundler') с 1.0.12 до 1.0.15. Теперь все хорошо.
Ответ 5
Qoute:
Насколько я вижу из источников:
Просто исправить rubygems_integration.rb, строка 256:
- Gem.source_index.all_gems.values
+ Gem.source_index.gems.values
Причина:
Gem:: SourceIndex # all_gems просто возвращал @gems, и теперь есть attr_reader для @gems. Я думаю, что это была причина для all_gems.
Источник: ruby-forum.com
Ответ 6
Я удалил и переустановил ruby 1.9.2 через RVM, а затем удалил все драгоценные камни:
gem list --no-versions
Поместите результат в файл с именем gems
(вычеркните сообщения об ошибках). Затем выполните:
GEMS=`cat gems`
for x in $GEMS ; do gem uninstall $x -aIx; done
После этого я смог запустить девственную команду, предложенную другими:
gem pristine --all --no-extensions
Это, когда ошибки исчезли.
Ответ 7
Bundler 1.0.13 (версия выпущена 4 мая 2011 г.), работающая с rubygems 1.7.2, вызывает это раздражающее предупреждение об отказе:
ПРИМЕЧАНИЕ: Gem:: SourceIndex # all_gems устарел без замены. Он будет удален после или после 2011-10-01. Gem:: SourceIndex # all_gems вызывается из /Users/me/.rvm/gems/[email protected]/gems/bundler-1.0.13/lib/bundler/rubygems_integration.rb:256
A от 5/11/2011 в репозитории Bundler чтобы исправить проблему, представленную 5/6/2011.
Ожидая выпуска Bundler 1.1, вы можете попробовать это решение:
$gem uninstall bundler
$gem install bundler --version = 1.0.12
Надеюсь, это поможет. Принял кое-что, чтобы найти его.