web-dev-qa-db-ja.com

Gem:Moduleの未定義メソッド `source_index '(NoMethodError)

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

だから、本当に何をすべきかわからない。私はいくつかの簡単な助けを得ることができると思います。ありがとう!

132
noodleboy347

古い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はついにそのメソッドを削除しました。機能を元に戻すには、1.8.25など、2.0.0より前のrubygemsバージョンにダウングレードします。 gem update --system 1.8.25を使用して互換バージョンを取得できます。

非常に重要なことは別として、Rails 2.3.5は最小2.3.17に更新する必要があります。非常に厄介な攻撃にさらされる重大なセキュリティ脆弱性があります。長期的には、3.xへのアップグレードは非常に強力なニーズと見なされる必要があります。

293
uxp

rvmユーザーの場合、

rvm install rubygems 1.8.2 --force
28
Arivarasan L

これは私を助けました: http://djellemah.com/blog/2013/02/27/Rails-23-with-Ruby-20/

gem update --system 1.8.25と組み合わせてこれを行いましたが、これはあなたのケースには必要ないかもしれません。

24
ippa

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

0
johnnyb