Por que parei de usar os gemsets do RVM

Por que parei de usar os gemsets do RVM

Uso RVM (Ruby Version Manager) desde que este foi lançado e pretendo continuar utilizando, dada a facilidade para utilizar diferentes implementações / versões do Ruby em uma mesma máquina.

Algo muito interessante que ele traz são os gemsets, ferramenta para separar suas gems em contextos separados, geralmente um para cada projeto. Isso fazia total sentido antes do Rails chegar em sua versão 3, quando Bundler foi incluso para o gerenciamento das gems. Depois disso, apenas projetos Rails 2 teriam o problema de versões diferentes das gems.

Mas atualmente é possível usar o Bundler em projetos Rails 2, tornando os gemsets inúteis. Juntei todas as minhas gems no gemset “global”, que já vem criado por default e há 2 meses tenho usado desta forma, onde tudo tem funcionado perfeitamente – tanto projetos em Rails 3 quanto em Rails 2.

O único detalhe, é que se você tiver duas ou mais versões de alguma gem que inclui um executável (rspec por exemplo) você precisa chamá-lo da seguinte maneira:

bundle exec rspec ...

Para que o bundler chame o executável correto, baseado no seu Gemfile.
Mas eu resolvi isso com os alias:

alias rake='bundle exec rake'
alias spec='bundle exec spec'
alias rspec='bundle exec rspec'

Como vocês estão fazendo? Alguma sugestão ou crítica?

  • Rafael Timbó

    A merda é só quando você tem um projeto Ruby sem Bundler ainda, daí você tem que criar um gemset. Mas como isso não deveria existir, concordo com vc. :)

  • Ta aí por que ainda contínuo usando os gemsets:

    Executáveis!

    Eu acho muito chato ter que colocar bundle exec na frente de tudo… Mas é questão de gosto mesmo e esse é o único “empecilho” de não usar só bundler.

  • Noleto: eu fiz 3 alias aqui que me ajudam muito, hehe:

    alias rake='bundle exec rake'
    alias spec='bundle exec spec'
    alias rspec='bundle exec rspec'

  • Ah lucão, seu post não me convenceu não … tá certo que eu quase não utilizo Rails, somente Ruby puro, com bundler em todos os projetos.
    Mas eu gosto de criar uma gemset para cada projeto, nem tanto por causa de versões das gems nem nada … mas é que desta forma eu sempre vou ter um ambiente limpo para o projeto novo, com um .rvmrc na raiz do projeto … aaah fica bunitao zeh

    Aliás johnny, eu vi esses dias no seu twitter que vc substituiu o Capistrano por Inploy … quando puder faça um post sobre isso pois pra mim ainda acho o Capistrano muito bao (especialmente por causa do bundler/capistrano)

    Teh mais zeeh!

  • Na verdade não estou usando nenhum dos dois.
    O próximo post será sobre isso. Ou não :)

  • Cainã Costa

    Já eu só tenho 2 gems instaladas, bundler e rake.
    Uso o método descrito aqui:
    http://ryan.mcgeary.org/2011/02/09/vendor-everything-still-applies/

Comments are closed.