Rip é um novo sistema de gerenciamento de pacotes para Ruby dos caras do GitHub. Ele pode lidar com vários recursos de instalação, como diretórios, arquivos, repositórios Git e também RubyGems.
Outra característica nova interessante são os Ambientes Virtuais ("ripenvs"). Ripenvs podem ser usados para instalar e gerenciar múltiplas versões de um pacote, sem ter conflitos. Ripenvs podem também ser úteis para tornar o upgrade de dependências mais seguro, apenas crie um novo ambiente experimental, atualize lá, e você pode ainda voltar para o ambiente estável se alguma coisa quebrar.
Mas por que um gerenciador de pacotes completamente novo? O que há de errado com RubyGems? Nós perguntamos a um dos desenvolvedores do Rip, Chris Wanstrath:
Não há um problema real com RubyGems. Eu amo RubyGems. Parece que as pessoas acham que o Rip foi escrito para "corrigir" ou suplantar RubyGems. Não é nada disso.
Rip foi escrito para tornar instalação, uso e gerenciamento de pacotes sensacional. Foi escrito para a pessoa que vai instalar os pacotes, não para a pessoa que vai distribui-los. Foi escrito para pessoas que querem saber exatamente quais versões de quais bibliotecas sua aplicação está usando com um comando, não adivinhando e com trabalho de detetive. Foi escrito para pessoas que querem saber sobre conflitos de dependênciias quando estão instalando pacotes, quando estão pensando sobre isso - não quando estão lançando a aplicação, pensando sobre outra coisa.
Rip foi escrito para pessoas que não querem ter que perguntar Que versão de X você está rodando? quando estão tentando ajudar você a debugar um problema. É para pessoas que querem a garantia de que todas as suas máquinas de produção estão rodando as mesmas bibliotecas nas mesmas versões. É para pessoas que querem testar como um upgrade de biblioteca vai afetar seu ambiente antes de fazer o commit da mudança.
Rip não foi escrito tendo base o que tem de errado com outros sistemas. Foi escrito tendo base o que é bom nos outros sistemas.
Não seria mais fácil apenas adaptar RubyGems?
Rip e RubyGems são coisas bem diferentes:Então realmente são projetos diferentes com objetivos diferentes. Eu não acredito que seria mais fácil (nem apropriado) mudar completamente de direção, características principais e código do RubyGems. Os dois sistemas podem viver lado a lado e complementar um ao outro sem problemas.
- Rip brinca com seu $LOAD_PATH enquanto RubyGems sobrecarrega `require`.
- Rip trabalha com $RUBYLIB enquanto RubyGems necessita um `require "rubygems"`.
- Rip gerencia múltiplos ambientes, cada um com uma versão de cada biblioteca, enquanto RubyGems gerencia um ambiente único com diferentes versões de cada biblioteca.
- Rip pode (teoricamente) instalar qualquer tipo de pacote enquanto RubyGems pode instalar arquivos.gem.
Ambientes Virtuais também parecem ser perfeitos para gerenciar pacotes para diferentes versões do Ruby, como JRuby.
Com certeza. Este é o ponto onde Rip é melhor – talvez você gostaria de publicar diferentes ripenvs (Ambientes Virtuais Rip instaláveis) para diferentes Rubies. Um para 1.9, um para 1.8, um para JRuby – com Rip é fácil tanto para você quanto para o consumidor.
Rip funciona assim. Sem características especiais.
Rip acabou de ser lançado na versão 0.0.1, o que você planejou para o futuro?
Ainda não começamos a promover nem descobrir o poder dos ripenvs. Ser capaz de compartilhar ambientes de desenvolvimento com um simples comando (por exemplo `rip freeze | gist`), fazer um merge de ambientes de desenvolvimento sem medo de conflitos de versão, e o poder de fazer o deploy de suas aplicações usando ripenvs é apenas parte das ideias que gostaríamos de focar. Elas ajudam a mostrar onde Rip brilha.
Nós também gostaríamos de copiar a ideia do `reflog` do git para que você possa ver ou desfazer facilmente qualquer mudança que você tenha feito em qualquer ripenv. Você nunca deve se preocupar em perder dados ou seu setup quando estiver usando Rip.
Também temos ideias otimas para ajudá-lo a achar pacotes quando você sabe o nome mas não sabe a URL.
E, naturalmente, suporte para hg, svn, e bzr está nos planos. Você poderá instalar de qualquer lugar.
E quanto ao suporte ao Windows, é obrigatório para o Rip 1.0.
Mais sobre Rip e um pequeno tutorial pode ser encontrado no website do Rip.