metodo non definito `source_index 'per Gem: Module (NoMethodError)


132

Sto eseguendo un'applicazione Rails 2.3.5 e su script / server in esecuzione mi viene mostrato quanto segue:

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

Se commento la riga 60 in boot.rb (Rails :: GemDependency.add_frozen_gem_path) ed eseguo script / server, ottengo questo:

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

Quindi, non sono proprio sicuro di cosa fare. Spero di ottenere un aiuto veloce. Grazie!

Risposte:


294

Mi sono appena imbattuto in questo problema mentre cercavo di aggiornare un'app Rails più vecchia da REE 1.8.7 a 1.9.3-p385. Stranamente, Ruby 1.9.3-p327 funziona bene. Ciò a cui è venuto in mente era ruby-1.9.3-p385 aveva installato RubyGems versione 2.0.2 per me, e 1.9.3-p327 ha installato RubyGems v1.8.23.

Gem.source_indexè stato deprecato per un po ', ma poiché Rails 2.3 non riceve alcun aggiornamento tranne le patch di sicurezza critiche, questo non verrà mai risolto. RubyGems v2.0 ha finalmente rimosso quel metodo. Esegui il downgrade a qualsiasi rubygemsversione precedente alla 2.0.0, come 1.8.25 per ripristinare la funzionalità per ora. Puoi ottenere una versione compatibile usando gem update --system 1.8.25.

A parte molto importante, Rails 2.3.5 deve essere aggiornato ad un minimo di 2.3.17. Esistono vulnerabilità di sicurezza critiche che ti aprono ad alcuni attacchi molto cattivi. A lungo termine, l'aggiornamento a 3.x deve essere considerato un'esigenza molto forte.


Grazie mille! Ha funzionato perfettamente. E sì, grazie, sono nel bel mezzo dell'aggiornamento alla 2.3.17, e poi all'ultima 3.x.
noodleboy347,

@uxp Eventuali suggerimenti per questo problema: stackoverflow.com/questions/15374188/…
Evolve il

87
Chiunque utilizzi RVM può chiamare rvm rubygems latest-1.8per eseguire il downgrade di rubygems e risolvere questo problema.
martino,

1
Il commento di Martin (Chiunque utilizzi RVM può chiamare rvm rubygems latest-1.8 per eseguire il downgrade di rubygems e risolvere questo problema.) Mi ha aiutato a risolvere il mio problema, dove sono rimasto bloccato da poche ore. Molte grazie.
Prajkta P,

30
Necessità di forzare il downgrade del rubygem:rvm rubygems --force latest-1.8
Matt White,

28

per gli utenti di camper,

rvm install rubygems 1.8.2 --force

1
Ho dovuto tornare alla 1.6.2 per farlo funzionare. Ma era questo comando che era necessario.
Zane,


0

Un altro modo per farlo è quello di installare slimgems: gem install slimgems. Questo è un fork drop-in di RubyGems che funziona meglio con le versioni precedenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.