método indefinido `source_index 'para Gem: Module (NoMethodError)

132

Estou executando um aplicativo Rails 2.3.5 e, ao executar o script / servidor, é mostrado o seguinte:

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

Se eu comentar a linha 60 no boot.rb (Rails :: GemDependency.add_frozen_gem_path) e executar o script / server, recebo o seguinte:

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

Então, não tenho certeza do que fazer. Esperando conseguir ajuda rápida. Obrigado!

noodleboy347
fonte

Respostas:

294

Eu mesmo tive esse problema ao tentar atualizar um aplicativo Rails mais antigo do REE 1.8.7 para 1.9.3-p385. Estranhamente, Ruby 1.9.3-p327 funciona muito bem. No final, o ruby-1.9.3-p385 instalou o RubyGems versão 2.0.2 para mim e o 1.9.3-p327 possui o RubyGems v1.8.23 instalado.

Gem.source_indexfoi descontinuado por um tempo, mas como o Rails 2.3 não está recebendo nenhuma atualização, exceto os patches de segurança críticos, isso nunca será corrigido. O RubyGems v2.0 finalmente removeu esse método. Faça o downgrade para qualquer rubygemsversão anterior à 2.0.0, como 1.8.25, para recuperar a funcionalidade por enquanto. Você pode obter uma versão compatível usando gem update --system 1.8.25.

Como um aspecto muito importante, o Rails 2.3.5 precisa ser atualizado para um mínimo de 2.3.17. Existem vulnerabilidades de segurança críticas que o abrem para ataques muito desagradáveis. A longo prazo, a atualização para 3.x precisa ser considerada uma necessidade muito forte.

uxp
fonte
Muito obrigado! Funcionou perfeitamente. E sim, obrigado, estou no meio da atualização para 2.3.17 e depois para a versão 3.x mais recente.
noodleboy347
@uxp Qualquer dica para esse problema: stackoverflow.com/questions/15374188/…
Evolve
87
Qualquer pessoa que use o RVM pode ligar rvm rubygems latest-1.8para fazer o downgrade de rubygems e corrigir esse problema.
martin
1
O comentário de Martin (qualquer pessoa que utilize o RVM pode ligar para rvm rubygems mais recente-1,8 para fazer o downgrade de rubygems e corrigir esse problema.) Me ajudou a resolver meu problema, onde eu estava preso há algumas horas. Muito obrigado.
precisa saber é o seguinte
30
Precisa forçar o downgrade de rubygems:rvm rubygems --force latest-1.8
Matt White
28

para usuários rvm,

rvm install rubygems 1.8.2 --force
Arivarasan L
fonte
1
Eu tive que voltar à 1.6.2 para fazer isso funcionar. Mas era esse comando que era necessário.
Zane
0

Outra maneira de fazer isso é instalar slimgems: gem install slimgems. Este é um fork do RubyGems que funciona melhor com versões antigas.

johnnyb
fonte