Gem : Module에 대한 정의되지 않은 메소드 'source_index'(NoMethodError)


132

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_frozen_gem_path)에서 60 행을 주석 처리하고 스크립트 / 서버를 실행하면 다음과 같은 결과가 나타납니다.

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

따라서 어떻게해야할지 확실하지 않습니다. 빠른 도움을받을 수 있기를 바랍니다. 감사!

답변:


294

이전 Rails 앱을 REE 1.8.7에서 1.9.3-p385로 업그레이드하려고 할 때이 문제가 발생했습니다. 이상하게도 Ruby 1.9.3-p327은 정상적으로 작동합니다. 루비 -1.9.3-p385는 RubyGems 버전 2.0.2를 설치했으며 1.9.3-p327에는 RubyGems v1.8.23이 설치되었습니다.

Gem.source_indexRails 2.3은 중요한 보안 패치를 제외하고는 업데이트를받지 않으므로이 문제는 해결되지 않습니다. RubyGems v2.0은 마침내 그 방법을 제거했습니다. rubygems현재 기능을 다시 사용하려면 1.8.25와 같이 2.0.0 이전 버전으로 다운 그레이드하십시오 . 를 사용하여 호환되는 버전을 얻을 수 있습니다 gem update --system 1.8.25.

매우 중요한 점으로 Rails 2.3.5는 최소 2.3.17로 업데이트해야합니다. 매우 치명적인 공격에 노출되는 중요한 보안 취약점이 있습니다. 장기적으로 3.x 로의 업그레이드는 매우 강력한 요구로 간주되어야합니다.


정말 고맙습니다! 완벽하게 작동했습니다. 그리고 네, 감사합니다. 2.3.17로 업그레이드 한 다음 최신 3.x로 업그레이드하는 중입니다.
noodleboy347

@uxp이 문제에 대한 팁 : stackoverflow.com/questions/15374188/…
Evolve

87
RVM 을 사용하는 사람은 누구나 rvm rubygems latest-1.8루비 젬을 다운 그레이드하고이 문제를 해결할 수 있습니다.
martin

1
Martin의 의견 (RVM을 사용하는 사람은 rvm rubygems 최신 -1.8을 호출하여 루비 젬을 다운 그레이드 하고이 문제를 해결할 수 있습니다.)는 몇 시간 이후 멈춰있는 문제를 해결하는 데 도움이되었습니다. 고마워
Prajkta P

30
루비 젬을 강제로 다운 그레이드해야합니다.rvm rubygems --force latest-1.8
Matt White

28

rvm 사용자의 경우

rvm install rubygems 1.8.2 --force

1
이 작업을하려면 1.6.2로 돌아 가야했습니다. 그러나이 명령이 필요했습니다.
Zane


0

이를위한 또 다른 방법은 slimgems를 설치하는 것 gem install slimgems입니다. 이전 버전에서 더 잘 작동하는 RubyGems의 드롭 인 포크입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.