phương thức không xác định `source_index 'cho Gem: Module (NoMethodError)


132

Tôi đang chạy ứng dụng Rails 2.3.5 và khi chạy script / máy chủ, tôi được hiển thị như sau:

./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

Nếu tôi nhận xét dòng 60 trong boot.rb (Rails :: GemDependency.add_f Frozen_gem_path) và chạy script / máy chủ, tôi nhận được điều này:

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

Vì vậy, không thực sự chắc chắn những gì để làm. Hy vọng tôi có thể nhận được một số trợ giúp nhanh chóng. Cảm ơn!

Câu trả lời:


294

Tôi vừa gặp phải vấn đề này trong khi cố gắng nâng cấp ứng dụng Rails cũ hơn từ REE 1.8.7 lên 1.9.3-p385. Điều kỳ lạ là Ruby 1.9.3-p327 chỉ hoạt động tốt. Những gì nó xuất hiện là ruby-1.9.3-p385 đã cài đặt phiên bản RubyGems 2.0.2 cho tôi và 1.9.3-p327 đã cài đặt RubyGems v1.8.23.

Gem.source_indexđã bị từ chối trong một thời gian, nhưng vì Rails 2.3 không nhận được bất kỳ bản cập nhật nào ngoại trừ các bản vá bảo mật quan trọng, điều này sẽ không bao giờ được sửa chữa. RubyGems v2.0 cuối cùng đã loại bỏ phương thức đó. Hạ cấp xuống bất kỳ rubygemsphiên bản nào trước 2.0.0, như 1.8.25 để lấy lại chức năng ngay bây giờ. Bạn có thể có được một phiên bản tương thích bằng cách sử dụng gem update --system 1.8.25.

Vì rất quan trọng, Rails 2.3.5 cần được cập nhật ở mức tối thiểu 2.3.17. Có những lỗ hổng bảo mật quan trọng mở ra cho bạn một số cuộc tấn công rất khó chịu. Về lâu dài, việc nâng cấp lên 3.x cần được coi là một nhu cầu rất mạnh.


Cảm ơn bạn rất nhiều! Nó hoạt động hoàn hảo. Và vâng, cảm ơn, tôi đang trong quá trình nâng cấp lên 2.3,17, và sau đó lên bản 3.x mới nhất.
noodleboy347

@uxp Bất kỳ lời khuyên nào cho vấn đề này: stackoverflow.com/questions/15374188/ cấp
Tiến hóa

87
Bất cứ ai sử dụng RVM đều có thể gọi rvm rubygems latest-1.8để hạ cấp rubygems và khắc phục vấn đề này.
martin

1
Nhận xét của Martin (Bất kỳ ai sử dụng RVM đều có thể gọi rvm rubygems mới nhất-1.8 để hạ cấp rubygems và khắc phục vấn đề này.) Đã giúp tôi giải quyết vấn đề của mình, nơi tôi bị kẹt từ vài giờ. Cảm ơn rất nhiều.
Prajkta P

30
Cần buộc hạ cấp rubygems:rvm rubygems --force latest-1.8
Matt White

28

cho người dùng rvm,

rvm install rubygems 1.8.2 --force

1
Tôi đã phải quay lại 1.6.2 để thực hiện công việc này. Nhưng đó là lệnh này là cần thiết.
Zane


0

Một cách khác để làm điều này là cài đặt slimgems : gem install slimgems. Đây là một nhánh rẽ của RubyGems hoạt động tốt hơn với các phiên bản cũ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.