Se você estiver usando o Bundler 1.1 ou posterior, você pode usar bundle clean
, assim como você imaginou que poderia. Isso é redundante se você estiver usando bundle install --path
(o Bundler gerencia o local que você especificou com --path, então assume a responsabilidade pela remoção de joias desatualizadas), mas se você usou o Bundler para instalar as joias como joias do sistema, então bundle clean --force
irá deletar quaisquer joias do sistema não exigido pelo seu Gemfile. Advertência extremamente óbvia: não faça isso se tiver outros aplicativos que dependem de joias do sistema que não estão em seu Gemfile!
Pat Shaughnessy tem uma boa descrição bundle clean
e outras novas adições no bundler 1.1 .
bundle clean --force
isso não afeta suas joias globais, mas apenas aquelas em seu conjunto de joias atual. Portanto,bundle clean --force
produz o mesmo resultado que e é mais rápido do quervm gemset empty
seguido porbundle install
.Se estiver usando RVM, você pode usar
rvm gemset empty
para o gemset atual - este comando removerá todas as gems instaladas no gemset atual (o próprio gemset permanecerá no lugar). Em seguida, executebundle install
para instalar as versões reais das joias. Também certifique-se de não deletar joias gerais como rake, bundler e assim por diantervm gemset empty
(se for o caso, instale-as manualmente viagem install
antes debundle install
).fonte
Se você estiver usando RVM, você pode instalar suas gemas em conjuntos de gemas . Dessa forma, quando você deseja realizar uma limpeza completa, pode simplesmente remover o conjunto de joias, que por sua vez remove todas as joias instaladas nele. Sua outra opção é simplesmente desinstalar suas joias não utilizadas e executar novamente o
bundle install
comando.Como o bundler é uma ferramenta de criação de versão de gem de projeto por projeto, ele não fornece um
bundle clean
comando. Isso significaria a possibilidade de remover joias associadas a outros projetos também, o que não seria desejável. Isso significa que o bundler é provavelmente a ferramenta errada a ser usada para gerenciar o diretório gem. Minha recomendação pessoal seria usar conjuntos de joias RVM para criar uma sandbox de suas joias em certos projetos ou versões de ruby.fonte
Honestamente, tive problemas com dependências circulares do bundler e a melhor maneira é
rm -rf .bundle
. Poupe-se da dor de cabeça e use o martelo.fonte
rvm implode --force
e, em seguida, reinstale o rvmPresumo que você instale gemas em
vendor/bundle
? Se sim, por que não deletar todas as gemas e fazer uma limpezabundle install
?fonte
Ao procurar por uma resposta para a mesma pergunta, me deparei com gem_unused .
Você também pode querer ler este artigo: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
O código-fonte está disponível no GitHub: https://github.com/ apolzon / gem_unused
fonte
Apenas remova as joias obsoletas do seu Gemfile. Se você está falando sobre o Heroku (você não mencionou isso), o slug é compilado a cada nova versão, usando apenas o conteúdo atual desse arquivo.
fonte
Basta executar, para limpar joias obsoletas e remover avisos de impressão após o pacote.
fonte