2013-03-11 54 views
129

我运行一个Rails 2.3.5应用和一旦运行脚本/服务器我示出以下内容:未定义的方法`source_index”的宝石:模块(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 

如果我注释掉线60在的boot.rb(滑轨:: GemDependency.add_frozen_gem_path)和运行脚本/服务器,我得到这个:

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

所以,真的不知道该怎么做。希望我能得到一些快速的帮助。谢谢!

回答

287

我刚刚尝试将旧版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最终删除了该方法。降级到2.0.0之前的任何rubygems版本,比如1.8.25版本,以便现在恢复功能。您可以使用gem update --system 1.8.25获得兼容版本。

作为一个非常重要的部分,Rails 2.3.5需要更新到最低2.3.17。存在严重的安全漏洞,可能会导致一些非常恶劣的攻击。从长远来看,升级到3.x需要被认为是一个非常强大的需求。

+0

太谢谢你了!它工作完美。是的,谢谢,我正在升级到2.3.17,然后升级到最新的3.x. – noodleboy347 2013-03-12 21:38:44

+0

@uxp这个问题的任何提示:http://stackoverflow.com/questions/15374188/why-is-my-rake-call-causing-an-undefined-method-source-index-error/15378764 – Evolve 2013-03-13 07:03:26

+16

宝石更新 - -system 1.8.25 – mmell 2013-03-15 16:14:33

25

RVM的用户,

rvm install rubygems 1.8.2 --force 
+1

我不得不回到1.6.2来完成这项工作。但这是需要的这个命令。 – Zane 2015-02-28 22:50:32

相关问题