J'exécute une application Rails 2.3.5) et, lors de l'exécution du script/serveur, les informations suivantes sont affichées:
./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 je commente la ligne 60 dans le fichier boot.rb (Rails :: GemDependency.add_frozen_gem_path) et que je lance le script/le serveur, je reçois ceci:
=> 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
Donc, je ne sais pas vraiment quoi faire. En espérant pouvoir obtenir de l'aide rapidement. Merci!
Je viens de rencontrer ce problème moi-même en essayant de mettre à niveau un ancien Rails app de REE 1.8.7 à 1.9.3-p385. Bizarrement, Ruby 1.9. 3-p327 fonctionne très bien, mais Ruby-1.9.3-p385 avait installé RubyGems version 2.0.2 pour moi et 1.9.3-p327 avait RubyGems v1.8.23 installé.
Gem.source_index
est obsolète depuis un moment, mais depuis Rails 2.3 ne reçoit aucune mise à jour, à l'exception des correctifs de sécurité critiques, cela ne sera jamais corrigé. RubyGems v2.0 a finalement supprimé cette méthode. rubygems
version antérieure à 2.0.0, comme 1.8.25 pour récupérer la fonctionnalité pour le moment. Vous pouvez obtenir une version compatible en utilisant gem update --system 1.8.25
.
De plus, Rails 2.3.5 doit être mis à jour à la version 2.3.17 au minimum. Il existe des vulnérabilités de sécurité critiques qui vous exposent à de très vilaines attaques. À long terme , passer à la version 3.x doit être considéré comme un besoin très important.
pour les utilisateurs de rvm,
rvm install rubygems 1.8.2 --force
Cela m'a aidé: http://djellemah.com/blog/2013/02/27/Rails-23-with-Ruby-20/
Je l'ai fait en combinaison avec gem update --system 1.8.25
, qui pourrait ne pas être nécessaire pour votre cas.
Une autre façon de faire est d’installer slimgems: gem install slimgems
. Il s’agit d’un fork de RubyGems qui fonctionne mieux avec les anciennes versions.