Evolução de App em Rails

Olá pessoal,

Sou inicial em Ruby on Rails e gostaria de saber a opinião de vocês sobre um assunto. Tenho uma aplicação por exemplo que utiliza ruby 1.9.2 com rails 3.0.0. Com o passar do tempo, meu Rails e minhas gems vão ficando obsoletas. Sei que existe a possibilidade de importar minhas gems pra dentro do projeto pra que não tenha problemas futuros em não encontrar mais essas gems, mas mesmo assim, minhas gems estão vinculadas a versão do ruby. Sei também que existe o rvm pra gerenciar meus ambientes ruby, mas mesmo assim, imagine essa aplicação daqui 10 anos, vai estar desatualizada, e formatar o servidor pra instalar um linux atualizado vai ser um problema. Como vocês tratam esse problema? Gostaria de saber a opinião do pessoal.

Eu gosto muito de usar o RVM pra gerenciar isso. O que geralmente faco e congelar as versoes das gems no meu Gemfile. Quando saem versoes novas das gems, eu simplesmente crio uma nova gemset no RVM que contem as gems mais atuais e testo a aplicacao nela. Faco as modificacoes necessarias na aplicacao - se for preciso - e versiono um novo Gemfile com os numeros das novas versoes.

Se voce tem controle sobre o que instalar no seu servidor, otimo. Agora se voce estiver contratando um servidor compartilhado entao voce fica refem do que estiver instalado la. Nesse caso voce pode usar a estrategia acima para evoluir as versoes das gems conforme elas vao evoluindo no servidor.

Certo. Quanto as gems acho interessante essa forma que você faz com RVM. Eu também gerencio os ambientes com ele atualmente. Mas o Rails está amarrado ao ruby e a aplicação também precisa evoluir nesse sentido. Nesse caso então, á cada mudança de versão do rails você cria um novo ambiente no rvm com o ruby atualizado (se necessário) e instala as gems necessárias com a versão do ruby atualizada, e vai controlando isso. É isso mesmo?

Isso, porque manter varias versoes do Ruby com o RVM e moleza tambem. O RVM permite que voce crie gemsets separadas para cada implementacao do Ruby na sua maquina.

E como você faz pra verificar novas atualizações de suas gems? Existe uma forma automática de fazer isso?

Rode o comando gem outdated e ele te diz quais as que estao desatualizadas e qual a versao nova de cada uma delas.

Entendi. Muito bom cara, valeu pelas dicas aí. Estava com medo de minha aplicação ficar obsoleta. Mas vi que existe formas bem legais de manter a aplicação sempre atualizada em Rails. Na verdade acho que essa ideia de sempre atualizar as bibliotecas serve pra aplicações java também né? Acho que a melhor saída é sempre manter as bibliotecas atualizadas né?

Cara, sou ate meio obcecado com isso, por isso sou meio suspeito pra falar. Em todos os lugares que trabalhei sempre fui o chato, querendo usar a versao mais recente de tudo. Claro, nem sempre foi possivel fazer isso pois depende de cada companhia.