Как я могу исправить проблему устаревания драгоценных камней?

#ruby-on-rails #ruby #ruby-on-rails-3 #rubygems #gemfile

#ruby-on-rails #ruby #ruby-on-rails-3 #rubygems #gemfile

Вопрос:

Я запустил bundle install , и это было успешно. Однако, когда я запустился ruby script/server , я получил много сообщений до фактического запуска сервера:

 NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/lib/site_ruby/1.8/rubygems/source_index.rb:127.

NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/lib/site_ruby/1.8/rubygems/source_index.rb:127.

NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/lib/site_ruby/1.8/rubygems/source_index.rb:127.
  

Как я могу это исправить?

Ответ №1:

Похоже, что устаревание находится внутри самого rubygems.

Просто запустите это в консоли, чтобы обновить его:

    gem update --system
  

Комментарии:

1. получил эту ошибку при попытке обновить обновление rubygems-ОШИБКА обновления: при выполнении gem… (Gem:: RemoteFetcher::FetchError) Ошибка :: ВРЕМЯ ожидания: время ожидания соединения истекло — connect (2) ( rubygems.org/gems/rubygems-update-1.8.11.gem )

2. я. я попробовал sudo gem update —system, но вот когда я получаю эту ошибку .. я не использую rvm, и я думаю, что проблема связана с исходным сервером gem.. может быть, мне нужно указать какой-то другой источник!! Не уверен, что это сработает

Ответ №2:

Это никому не понравится, но пока у меня это работает.
версии:
ruby -v # => ruby 1.8.7 (2012-02-08 уровень исправлений 358) [universal-darwin11.0]
rails -v # => Rails 2.3.5
gem -v # => 1.8.25

Исправление:
sudo vi /Library/Ruby/Site/1.8/rubygems/source_index.rb
(файл может быть расположен в другом месте вашей системы, прочитайте ваше сообщение об ошибке, оно сообщит вам, где он находится)

Измените строку 127 с:
add_spec gemspec, если gemspec
на:
Gem::Specification.add_spec gemspec, если gemspec

теперь rubygems будет использовать метод без амортизации, и предупреждение должно исчезнуть.

Предупреждение Уилл Робинсон: я программист-ковбой и понятия не имею, какие побочные эффекты это может иметь, но пока у меня все работает нормально. Похоже, что файл source_index.rb не является частью репозитория rubygems github, поэтому я предполагаю, что он создан каким-то другим процессом. Я слышал, что если вы используете rails 3, это исчезнет. :: пожимает плечами::

Комментарии:

1. После небольшого поиска в Google я подозреваю, что эта проблема связана с системой rubygems, которая предварительно установлена на Mac. opensource.apple.com/source/RubyGems/RubyGems-17/rubygems/lib/… Возможно, что удаление rubygems все вместе, а затем повторная установка из исходного кода rubygems на github может решить эту проблему. Я не могу рисковать своей средой разработки прямо сейчас, чтобы попробовать.