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は問題なく動作します。その結果、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は最終的にそのメソッドを削除しました。rubygems2.0.0より前のバージョン(1.8.25など)にダウングレードして、現時点で機能を回復します。互換バージョンはを使用して入手できます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/...
進化

87
RVMを使用しているユーザーはだれでも、rvm rubygems latest-1.8rubymemをダウングレードしてこの問題を修正するように要求できます。
マーティン2013

1
Martinのコメント(RVMを使用している人は誰でも、rvm ruby​​gems latest-1.8を呼び出してrubygemsをダウングレードし、この問題を修正できます。)は、数時間後にスタックしていた問題を解決するのに役立ちました。どうもありがとう。
Prajkta P 2014

30
rubygemのダウングレードを強制する必要があります:rvm rubygems --force latest-1.8
Matt White

28

RVMユーザーの場合

rvm install rubygems 1.8.2 --force

1
この作業を行うには1.6.2に戻る必要がありました。しかし、必要なのはこのコマンドでした。
Zane、2015


0

これを行う別の方法は、slimgemsをインストールすることですgem install slimgems。これはRubyGemsのドロップインフォークであり、古いバージョンでよりよく動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.