2013-03-11 8 views
129

ich eine Rails 2.3.5-Anwendung und auf laufende Skript/Server ich folgendes gezeigt:nicht definierte Methode `source_index‘ für Gem: Modul (NoMethodError)

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

Wenn ich die Leitung 60 auf Kommentar in boot.rb (Rails :: GemDependency.add_frozen_gem_path) und führen Sie Skript/Server, bekomme ich diese:

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

Also, nicht wirklich sicher, was zu tun ist. Hoffe ich kann eine schnelle Hilfe bekommen. Vielen Dank!

Antwort

287

Ich habe dieses Problem gerade selbst beim Versuch, eine ältere Rails App von REE 1.8.7 auf 1.9.3-p385 zu aktualisieren, gefunden. Seltsamerweise funktioniert Ruby 1.9.3-p327 gut. Was es dazu brachte war, dass ruby-1.9.3-p385 RubyGems Version 2.0.2 für mich installiert hatte und 1.9.3-p327 RubyGems v1.8.23 installiert hatte.

Gem.source_index ist seit einiger Zeit veraltet, aber da Rails 2.3 außer kritischen Sicherheitspatches keine Updates erhält, wird dies nie behoben werden. RubyGems v2.0 hat diese Methode endgültig entfernt. Downgrade auf rubygems Version vor 2.0.0, wie 1.8.25, um die Funktionalität für jetzt wieder zu erhalten. Sie können eine kompatible Version mit gem update --system 1.8.25 erhalten.

Als sehr wichtig beiseite, Rails 2.3.5 muss auf ein Minimum von 2.3.17 aktualisiert werden. Es gibt kritische Sicherheitslücken, die Sie für einige sehr bösartige Angriffe öffnen. Auf lange Sicht muss ein Upgrade auf 3.x als sehr stark betrachtet werden.

+0

Vielen Dank! Es hat perfekt funktioniert. Und ja, danke, ich bin gerade dabei, auf Version 2.3.17 und dann auf Version 3.x aufzurüsten. – noodleboy347

+0

@uxp Irgendwelche Tipps für dieses Problem: http://stackoverflow.com/questions/15374188/why-is-my-rake-call-causing-an-undefined-method-source-index-error/15378764 – Evolve

+16

Juwel Update - -System 1.8.25 – mmell

25

für rvm Benutzer,

rvm install rubygems 1.8.2 --force 
+1

Ich musste zu 1.6.2 gehen, um diese Arbeit zu machen. Aber es war dieser Befehl, der gebraucht wurde. – Zane

Verwandte Themen