Как обрабатывать предупреждение об устаревшем драгоценном камне (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/ruby-1.9.2-p180@ppr3/gems/bundler-1.0.13/lib/bundler/rubygems_integration.rb:256
.

Кто-нибудь знает, что это значит и как с этим бороться?

Примечание. Это среда Rails 3.0.7.


person Meltemi    schedule 04.05.2011    source источник


Ответы (7)


Я получил те же ошибки для группы моих драгоценных камней в среде, отличной от Rails, когда я обновился до rubygems 1.8.0. Я получил предупреждения в любое время, когда требуется rubygems. Глядя в сеть, кажется, что это может быть проблема и с rubygems 1.7.x, но у меня никогда не устанавливалась ни одна из этих версий, поэтому я не уверен. Я исправил это, запустив:

gem pristine --all --no-extensions

Мне пришлось запускать его несколько раз - он продолжал выдавать ошибку (но обычно не в одном и том же месте от запуска к запуску). В конце концов он зашел достаточно далеко, чтобы решить большинство моих драгоценных камней.

Было несколько драгоценных камней, спецификации которых не были восстановлены правильно (json и сиквел, особенно в моем случае), потому что им нужно было создать расширение. (Выходные данные команды gem показали, что она пропускает их, хотя это сообщение было легко пропустить среди всех предупреждений об устаревании.) Для этих драгоценных камней я удалил их, а затем переустановил (ранее они были установлены пакетником в rubygems 1.5). .x), и это исправило оставшиеся предупреждения. Может быть, я и мог бы начать с этого плана атаки изначально, но я не пытался.

person Andy Tinkham    schedule 05.05.2011
comment
ваш ответ привел меня к моему ... моя проблема была двоякой: было несколько плохих драгоценных камней, которые нужно было удалить и переустановить (mysql2, json и nokogiri). а также должен был запустить ваш gem pristine --all --no-extensions обратно на мой гемсет global, где был Бандлер. Теперь все хорошо... спасибо! - person Meltemi; 07.05.2011
comment
У меня есть эта ошибка на rake, и я не могу исправить ее, удалив rake и переустановив - person Aaron Qian; 07.05.2011
comment
Извините - без понятия. Я сам установил рейк 0.8.7 и не имею с ним проблем, связанных с RubyGems или нет. - person Andy Tinkham; 09.05.2011
comment
Я был на rubygems 1.7.x и постоянно получал эту ошибку. Обновился до 1.8.1 (обновление драгоценных камней --система), и это прояснилось. - person lambinator; 12.05.2011
comment
И вот я думаю, что стучать молотком по одному и тому же делу - никогда не бывает полезно в программном обеспечении... Я ошибался ;-) - person PandaWood; 23.06.2014

Он был вызван из драгоценного камня Bundler. Попробуйте обновить упаковщик, может поможет

sudo gem update bundler
person jaredonline    schedule 04.05.2011
comment
Обновлен Bundler до 1.0.13 (ранее он был 1.0.12), но предупреждения сохраняются... То же самое предупреждение об устаревании появляется перед чем угодно (bundle show..., rake routes, rails s и т. д.). - person Meltemi; 05.05.2011
comment
По иронии судьбы, предупреждение исходит от реализации, которая обрабатывает устаревшие версии Gem. - person tadman; 10.05.2011
comment
Это сработало для меня... Теперь на сборщике 1.1.0 - person Artilheiro; 13.03.2012

Гем Pry напрямую использует API rubygems и, к сожалению, не может быть исправлен простым запуском gem pristine --all.

Я разветвил гем Pry и добавил исправления, используя неустаревшие вызовы API. В ожидании слияния с мастером, вот ответвление: https://github.com/dvdplm/pry

person dvdplm    schedule 31.05.2011

Я обновил упаковщик («упаковщик обновлений драгоценных камней») с 1.0.12 до 1.0.15. Теперь все хорошо.

person Steve Upstill    schedule 23.06.2011

Цитата:

Насколько я вижу из исходников:
Просто пропатчите rubygems_integration.rb, строка 256:
- Gem.source_index.all_gems.values
+ Gem.source_index.gems.values
Причина:
> Gem::SourceIndex#all_gems только что возвращал @gems, а теперь для @gems есть attr_reader. Я думаю, что это было причиной удаления метода all_gems.

Источник: ruby-forum.com

person Art Shayderov    schedule 08.05.2011
comment
Исправление вашего драгоценного камня не будет работать очень хорошо, поскольку вам придется исправлять его на каждой системе, затронутой этим. Для некоторых это могут быть десятки, если не сотни. - person tadman; 10.05.2011

Я удалил и переустановил 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

Вот тогда и пропали ошибки.

person Sjors Provoost    schedule 17.05.2011
comment
Если вы хотите сделать это быстрее... gem list --no-versions | xargs gem uninstall -aIx, а затем запустите gem pristine --all --no-extensions - person ocodo; 04.10.2011

Bundler 1.0.13 (версия выпущена 4 мая 2011 г.), работающий с rubygems 1.7.2, выдает раздражающее предупреждение об устаревании:

ПРИМЕЧАНИЕ. Gem::SourceIndex#all_gems устарел без замены. Он будет удален 01.10.2011 или позднее. Gem::SourceIndex#all_gems вызывается из /Users/me/.rvm/gems/ruby-1.9.2-p180@composer/gems/bundler-1.0.13/lib/bundler/rubygems_integration.rb:256

исправление было зафиксировано 11 5/2011 в репозитории Bundler для исправления ошибки, отправленной 06.05.2011.

В ожидании выпуска Bundler 1.1 вы можете попробовать это решение:

Упаковщик удаления $ gem

$ сборщик установки gem --version=1.0.12

Надеюсь, это поможет. Пришлось немного покопаться, чтобы найти его.

person Daniel Kehoe    schedule 24.05.2011
comment
Вышел Bundler 1.0.14, в котором это исправлено. - person sj26; 28.05.2011