Método indefinido `source_index 'para Gem: Módulo (NoMethodError)

132

Estoy ejecutando una aplicación Rails 2.3.5 y al ejecutar el script / servidor se me muestra lo siguiente:

./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

Si comento la línea 60 en boot.rb (Rails :: GemDependency.add_frozen_gem_path) y ejecuto el script / servidor, obtengo esto:

=> 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

Entonces, no estoy seguro de qué hacer. Esperando poder obtener ayuda rápida. ¡Gracias!

noodleboy347
fuente

Respuestas:

294

Me encontré con este problema al intentar actualizar una aplicación Rails anterior de REE 1.8.7 a 1.9.3-p385. Curiosamente, Ruby 1.9.3-p327 funciona bien. En definitiva, ruby-1.9.3-p385 había instalado RubyGems versión 2.0.2 para mí, y 1.9.3-p327 tiene instalado RubyGems v1.8.23.

Gem.source_indexha quedado en desuso por un tiempo, pero dado que Rails 2.3 no recibe ninguna actualización, excepto parches de seguridad críticos, esto nunca se solucionará. RubyGems v2.0 finalmente eliminó ese método. Cambie a cualquier rubygemsversión anterior a 2.0.0, como 1.8.25 para recuperar la funcionalidad por ahora. Puede obtener una versión compatible usando gem update --system 1.8.25.

Como un aparte muy importante, Rails 2.3.5 necesita actualizarse a un mínimo de 2.3.17. Existen vulnerabilidades críticas de seguridad que lo abren a algunos ataques muy desagradables. A largo plazo, la actualización a 3.x debe considerarse una necesidad muy fuerte.

uxp
fuente
Muchas gracias! Funcionó perfectamente. Y sí, gracias, estoy en medio de la actualización a 2.3.17 y luego a la última versión 3.x.
noodleboy347
@uxp Algún consejo para este problema: stackoverflow.com/questions/15374188/…
Evoluciona el
87
Cualquiera que use RVM puede llamar rvm rubygems latest-1.8para degradar rubygems y solucionar este problema.
Martin
1
El comentario de Martin (cualquiera que use RVM puede llamar a rvm rubygems latest-1.8 para degradar rubygems y solucionar este problema) me ayudó a resolver mi problema, donde estuve atrapado desde hace unas horas. Muchas gracias.
Prajkta P
30
Necesidad de forzar la degradación de rubygems:rvm rubygems --force latest-1.8
Matt White
28

para usuarios de rvm,

rvm install rubygems 1.8.2 --force
Arivarasan L
fuente
1
Tuve que volver a 1.6.2 para que esto funcione. Pero era este comando lo que se necesitaba.
Zane
0

Otra manera de hacer esto es instalar slimgems: gem install slimgems. Esta es una bifurcación de RubyGems que funciona mejor con versiones anteriores.

johnnyb
fuente