Trazendo um aplicativo Rails 2.3.5 em Ruby 1.8.7 com RVM

Eu sempre recomendaria primeiro atualizar para o Rails 3 no Ruby 1.9.x (ou Rails 4 no Ruby 2 para você), mas se houver um caso em que você absolutamente precisa da mistura 2.3.x / 1.8.7, minhas dores de cabeça podem ajude a poupar o seu.

Obtenha Ruby 1.8.7

Depois de instalar o RVM , instale a versão mais antiga do Ruby

rvm install 1.8.7-p352 --verify-downloads 1

Use esta versão Ruby com rvm use 1.8.7-p352ou rvm rvmrc to .ruby-version. O último é se você já tiver uma configuração de ambiente Ruby com um arquivo .rvmrc.

Faça downgrade de seus RubyGems

É sempre um mau sinal quando você vê a palavra “downgrade”, mas existem tantas incompatibilidades entre o RubyGems mais novo (que virá com uma nova instalação do RVM e qualquer Ruby) e Rails 2.3.5. Portanto, para contornar uma série de erros alegando que não existem tais métodos, faça downgrade!

gem update --system 1.3.5

RubyGems 1.3.5 foi uma aposta segura para mim porque eu tinha o aplicativo funcionando com esta versão em outro servidor. Você pode ter que pescar para sua versão específica, mas o pacote 1.3.x parece resolver a maioria desses problemas.

Este downgrade sozinho funcionou para mim, mas você também pode ter que excluir a versão mais recente do RubyGems se o seu aplicativo ainda estiver tendo problemas de compatibilidade ( sudo gem uninstall -v '{VERSION_NO}' rubygems-update).

Desinstalar bundler

O erro que encontrei que me levou ao Google foi uninitialized constant Gem::Installer::ENV_PATHSe esta postagem me levou a desinstalar o bundler. Para desinstalar o bundler, execute:

rvm @global do gem uninstall -ax rubygems-bundler

Observe que isso afetará sua instalação global do Ruby, portanto, você provavelmente não deseja hospedar aplicativos Ruby mais recentes no mesmo servidor.

Instalar passageiro

gem install passenger -v=3.0.8

E configurá-lo .

Instale outras joias necessárias

Você deve estar pronto para instalar todas as joias necessárias e colocar o aplicativo em execução. Se você tiver a sorte de ter um servidor em execução com este aplicativo, do qual pode espelhar as configurações do gem, faça isso; as versões mais recentes de gem provavelmente causarão todos os tipos de problemas.

Se você era um programador meticuloso antes do bundler e configurou todas as suas config.gemlinhas em seus ambientes Rails, bom para você, isso vai ser muito fácil.

Para o resto de nós, corte suas perdas e atualize todos os seus aplicativos o mais rápido possível.