невизначений метод `source_index 'для Gem: Модуль (NoMethodError)


132

Я запускаю програму Rails 2.3.5 і після запуску скрипта / сервера мені показано таке:

./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:21:in `add_frozen_gem_path': undefined method `source_index' for Gem:Module (NoMethodError)
    from ./script/../config/boot.rb:60:in `load_initializer'
    from ./script/../config/boot.rb:44:in `run'
    from ./script/../config/boot.rb:17:in `boot!'
    from ./script/../config/boot.rb:123
    from script/server:2:in `require'
    from script/server:2

Якщо я коментую рядок 60 у boot.rb (Rails :: GemDependency.add_frozen_gem_path) і запускаю скрипт / сервер, я отримую це:

=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:21:in `add_frozen_gem_path': undefined method `source_index' for Gem:Module (NoMethodError)
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:298:in `add_gem_load_paths'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:132:in `process'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `send'
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `run'
    from /home/developer/bigpink/config/environment.rb:13
    from /home/developer/bigpink/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /home/developer/bigpink/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /home/developer/bigpink/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /home/developer/bigpink/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /home/developer/bigpink/vendor/rails/railties/lib/commands/server.rb:84
    from script/server:3:in `require'
    from script/server:3

Отже, не дуже впевнений, що робити. Сподіваючись, що я можу отримати швидку допомогу. Дякую!

Відповіді:


294

Я щойно зіткнувся з цією проблемою, намагаючись оновити старіший додаток Rails з REE 1.8.7 до 1.9.3-p385. Як не дивно, Ruby 1.9.3-p327 працює просто чудово. До чого прийшло рубін-1.9.3-p385, для мене було встановлено RubyGems версії 2.0.2, а в 1.9.3-p327 встановлено RubyGems v1.8.23.

Gem.source_indexна деякий час застаріла, але оскільки Rails 2.3 не отримує жодних оновлень, окрім критичних патчів безпеки, це ніколи не буде виправлено. RubyGems v2.0 остаточно видалив цей метод. rubygemsПоновіть версію на будь-яку версію до версії 2.0.0, наприклад, 1.8.25, щоб отримати функціональність на даний момент. Ви можете отримати сумісну версію, використовуючи gem update --system 1.8.25.

Як дуже важливу сторону, рейки 2.3.5 потрібно оновити до мінімуму 2.3.17. Існують критичні вразливості безпеки, які відкривають вам кілька неприємних атак. У перспективі оновлення до 3.x слід вважати дуже сильною потребою.


Дуже дякую! Це спрацювало чудово. І так, дякую, я перебуваю в розпалі оновлення до 2.3.17, а потім до останнього 3.x.
noodleboy347

@uxp Будь-які поради з цього питання: stackoverflow.com/questions/15374188 / ...
Evolve

87
Кожен, хто використовує RVM, може зателефонувати rvm rubygems latest-1.8на поновлення рубігем та виправити цю проблему.
март

1
Коментар Мартіна (Кожен, хто використовує RVM, може зателефонувати на rvm rubygems найновіший-1.8, щоб зменшити рубігми та виправити цю проблему.) Допоміг мені вирішити свою проблему, де я затримався з кількох годин. Дуже дякую.
Праджкта П

30
Потрібно змусити понижувати рубігми:rvm rubygems --force latest-1.8
Метт Уайт

28

для користувачів rvm,

rvm install rubygems 1.8.2 --force

1
Мені довелося повернутися до 1.6.2, щоб зробити цю роботу. Але саме ця команда була потрібна.
Зейн


0

Інший спосіб зробити це полягає в установці slimgems: gem install slimgems. Це вилка вилки RubyGems, яка краще працює зі старими версіями.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.