Gem için tanımlanmamış yöntem `` source_index '': Modül (NoMethodError)


132

Bir Rails 2.3.5 uygulaması çalıştırıyorum ve komut dosyası / sunucu çalıştırdığımda aşağıdakiler gösteriliyor:

./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'deki (Rails :: GemDependency.add_frozen_gem_path) 60. satırı yorumlarsam ve komut dosyası / sunucu çalıştırırsam, şunu elde ederim:

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

Yani, ne yapacağından emin değilim. Hızlı bir yardım alabileceğimi umuyorum. Teşekkürler!

Yanıtlar:


294

REE 1.8.7'den 1.9.3-p385'e eski bir Rails uygulamasını yükseltmeye çalışırken bu problemle kendim karşılaştım. İşin garibi, Ruby 1.9.3-p327 gayet iyi çalışıyor. Ruby-1.9.3-p385 benim için RubyGems sürüm 2.0.2'yi kurdu ve 1.9.3-p327'de RubyGems v1.8.23 kurulu oldu.

Gem.source_indexbir süredir kullanımdan kaldırıldı, ancak Rails 2.3 kritik güvenlik yamaları dışında herhangi bir güncelleme almadığından, bu asla düzeltilmeyecek. RubyGems v2.0 sonunda bu yöntemi kaldırdı. rubygemsİşlevselliği şimdilik geri almak için 1.8.25 gibi 2.0.0'dan önceki herhangi bir sürüme düşürün. Kullanarak uyumlu bir sürüm edinebilirsiniz gem update --system 1.8.25.

Çok önemli bir taraf olarak, Rails 2.3.5'in minimum 2.3.17'ye güncellenmesi gerekiyor. Sizi bazı çok kötü saldırılara açan kritik güvenlik açıkları vardır. Uzun vadede, 3.x'e yükseltmenin çok güçlü bir ihtiyaç olduğu düşünülmelidir.


Çok teşekkür ederim! Mükemmel çalıştı. Ve evet, teşekkürler, 2.3.17'ye ve ardından en son 3.x'e yükseltmenin ortasındayım.
noodleboy347

@uxp Bu sorunla ilgili herhangi bir ipucu: stackoverflow.com/questions/15374188/…
Evolve

87
RVM kullanan herkes rvm rubygems latest-1.8rubygems'i düşürmek ve bu sorunu düzeltmek için arayabilir .
martin

1
Martin'in yorumu (RVM kullanan herkes rubygems'i düşürmek ve bu sorunu düzeltmek için rvm rubygems en son 1.8'i arayabilir.), Birkaç saattir takılıp kaldığım bir yerde sorunumu çözmeme yardımcı oldu. Çok teşekkürler.
Prajkta P

30
Yakut taşları düşürmeye zorlamanız gerekiyor:rvm rubygems --force latest-1.8
Matt White

28

rvm kullanıcıları için,

rvm install rubygems 1.8.2 --force

1
Bunun işe yaraması için 1.6.2'ye geri dönmem gerekiyordu. Ama ihtiyaç duyulan buydu.
Zane


0

Bunu yapmanın bir başka yolu slimgems yüklemektir: gem install slimgems. Bu, eski sürümlerle daha iyi çalışan bir RubyGems çatalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.