Undefined метод `source_index 'для Gem: Module (NoMethodError)
Я запускаю приложение Rails 2.3.5, и при запуске script/server мне показывают следующее:
./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) и запустил script/server, я получаю следующее:
=> 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
Итак, не совсем уверен, что делать. Надеюсь, я смогу немного помочь. Спасибо!
Ответы
Ответ 1
Я просто столкнулся с этой проблемой, пытаясь обновить старое приложение Rails от REE 1.8.7 до 1.9.3-p385. Как ни странно, Ruby 1.9.3-p327 работает отлично. В результате Ruby-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
.
В качестве очень важного аспекта Rails 2.3.5 необходимо обновить до минимума 2.3.17. Существуют критические уязвимости безопасности, которые открывают вас до очень неприятных атак. В долгосрочной перспективе модернизация до 3.x должна считаться очень сильной потребностью.
Ответ 2
для пользователей rvm,
rvm install rubygems 1.8.2 --force
Ответ 3
Это помогло мне: http://djellemah.com/blog/2013/02/27/rails-23-with-ruby-20/
Я сделал это в сочетании с gem update --system 1.8.25
, что может не понадобиться для вашего случая.
Ответ 4
Еще один способ сделать это - установить slimgems: gem install slimgems
. Это ветвь RubyGems, которая лучше работает со старыми версиями.