Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法`源索引';对于Gem:模块(NoMethodError)_Ruby On Rails_Ruby On Rails 2 - Fatal编程技术网

Ruby on rails 未定义的方法`源索引';对于Gem:模块(NoMethodError)

Ruby on rails 未定义的方法`源索引';对于Gem:模块(NoMethodError),ruby-on-rails,ruby-on-rails-2,Ruby On Rails,Ruby On Rails 2,我正在运行Rails 2.3.5应用程序,在运行脚本/服务器时,我看到以下内容: ./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 `lo

我正在运行Rails 2.3.5应用程序,在运行脚本/服务器时,我看到以下内容:

./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
如果我注释掉boot.rb(Rails::GemDependency.add_freezed_gem_path)中的第60行并运行script/server,我会得到以下结果:

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

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

我自己在尝试将旧版Rails应用程序从REE1.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版本1.8.23

Gem.source\u 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需要被视为一种非常强烈的需求。

这对我有帮助:

我结合
gem更新--system 1.8.25
完成了这项工作,您的案例可能不需要它。

对于rvm用户

rvm install rubygems 1.8.2 --force

另一种方法是安装slimgems:
gem安装slimgems
。这是RubyGems的一个插件,在旧版本中工作得更好。

更新:除了@uxp答案之外,如果您在运行Catalina的Mac上运行此命令,则命令中有一个小的更改,您需要添加-n


所以命令应该是
sudogem update--system-n1.8.25

非常感谢!它工作得很好。是的,谢谢,我正在升级到2.3.17,然后升级到最新的3.x.@uxp关于这个问题的任何提示:任何使用rvm rubygems的人都可以调用
rvm rubygems latest-1.8
来降级rubygems并修复这个问题。Martin的评论(任何使用rvm的人都可以调用rvm rubygems latest-1.8来降级rubygems并修复这个问题。)帮助我解决了我的问题,几个小时以来我一直被困在那里。非常感谢。需要强制降级rubygems:
rvm rubygems--force latest-1.8
我必须返回到1.6.2才能实现这一点。但需要的正是这个命令。