1. ホーム
  2. ruby-on-rails

[解決済み] Gem:Module の未定義メソッド `source_index' (NoMethodError)

2022-06-26 01:23:40

質問

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 の 60 行目 (Rails::GemDependency.add_frozen_gem_path) をコメントアウトして 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 アプリを 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ではついにこの方法が削除されました。ダウングレードして、任意の rubygems 2.0.0より前のバージョン、たとえば1.8.25にダウングレードすると、とりあえず機能を取り戻せます。互換性のあるバージョンを取得するには gem update --system 1.8.25 .

非常に重要な余談ですが、Rails 2.3.5は最低でも2.3.17に更新する必要があります。致命的なセキュリティ脆弱性があり、非常に厄介な攻撃にさらされる可能性があります。長期的には、3.x へのアップグレードは非常に強いニーズであると考える必要があります。