Em muitos projetos criados com Rails, mantemos uma lista de dependências—normalmente gems—que estão atreladas a uma versão específica, mas que podem utilizar versões mais novas sem ter nenhum tipo de problema. Manter suas dependências atualizadas é extramente importante, principalmente em casos de atualizações de segurança.

Meu ambiente de desenvolvimento consiste em ter um RVM Gemset para cada projeto, com seu próprio arquivo .rvmrc, tornando muito fácil a tarefa de descobrir o que está desatualizado, já que a lista de gems é menor.

Um comando muito conveniente do RubyGems permite listar todas as dependências que estão desatualizadas. Trata-se de gem outdated. Em um dos meus projetos, esse comando listou as seguintes atualizações:

$ gem outdated
aruba (0.2.1 < 0.2.3)
bluecloth (2.0.7 < 2.0.9)
bson (1.0.4 < 1.0.9)
bson_ext (1.0.4 < 1.0.9)
bundler (1.0.0 < 1.0.2)
cucumber (0.8.5 < 0.9.1)
gherkin (2.1.5 < 2.2.7)
mongo (1.0.7 < 1.0.9)
mongo_mapper (0.8.3 < 0.8.4)
plucky (0.3.4 < 0.3.5)
postmark (0.9.0 < 0.9.2)
rack-test (0.5.4 < 0.5.6)
rcov (0.9.8 < 0.9.9)
thor (0.14.0 < 0.14.2)

Como o Rails 3 depende de versões específicas para garantir que nada irá quebrar, algumas gems não podem ser atualizadas; é o caso de rack-test (0.5.4) e thor (0.14.0).

Para atualizar para as versões mais recentes, basta instalar novamente as gems, como no exemplo abaixo:

$ gem install aruba bluecloth bson bson_ext bundler cucumber gherkin mongo mongo_mapper plucky postmark rcov

Depois, você pode remover as gems mais antigas. O RubyGems também possui um comando para esta tarefa.

$ gem cleanup

Às vezes, o comando gem cleanup irá avisar que alguma gem depende da versão que você está removendo. Neste caso, você pode verificar as dependências desta gem para ver se ela precisa de uma versão específica com o comando gem dependency.

$ gem dependency sinatra
Gem sinatra-1.0
  builder (>= 0, development)
  erubis (>= 0, development)
  haml (>= 0, development)
  less (>= 0, development)
  rack (>= 1.0, runtime)
  rack-test (>= 0.3.0, development)
  shotgun (>= 0.6, < 1.0, development)

Comentários #

#1 Pedro Mateus Tavares disse:
03 Out 10, 02:19PM

Opa,

Passei só pra avisar da existência do RubyTracker (rubytracker.com) que gerencia esse processo de atualização de gems pra você, avisando por e-mail quando algum projeto está desatualizado.

Espero que a dica tenha ajudado, abraço!

#2 Nando Vieira disse:
03 Out 10, 04:20PM

Eu tinha visto esse app do Greg Pollack, mas não me empolguei muito... mais uma coisa para cadastrar...

#3 mairon disse:
11 Out 10, 10:49AM

muitooo bommm

abraco

#4 Saulo Cavalcante disse:
11 Dez 10, 05:17PM

Bem que poderia aparecer o changelog.

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

JavaScript Avançado

O JavaScript é a única linguagem que muitos acreditam saber sem nunca terem parado para realmente aprendê-la. Neste workshop rápido você entenderá de verdade todos os conceitos avançados do JavaScript em 4 horas puramente práticas.

Saiba mais Fechar

Conheça também o HOWTO