O Bundler é iniciado a partir do diretório raiz do seu aplicativo para garantir que todas as gemas necessárias estejam presentes para que seu aplicativo funcione. Se por algum motivo você não precisar mais de uma gema, será necessário executar o
gem uninstall gem_name
como você afirmou acima. Portanto, toda vez que você executar o bundler, ele verificará novamente as dependências
EDITAR - 24.12.2014
Vejo que as pessoas continuam chegando a essa questão, decidi acrescentar algo. A resposta que dei foi para o caso em que você mantém suas joias globais. Considere o uso de um gerenciador de gemas como rbenv ou rvm para manter conjuntos de gemas com escopo em projetos específicos.
Isso significa que nenhuma gema será instalada em um nível global e, portanto, quando você remove uma do Gemfile do projeto e reexecuta o pacote, obviamente, ela não será carregada em seu projeto. Em seguida, você pode executar bundle clean (com o diretório do projeto) e ele removerá do sistema todas as joias que foram instaladas uma vez do seu Gemfile (no mesmo diretório), mas neste momento não estão mais listadas lá .... longa história curta - remove joias não utilizadas.
gem uninstall pg
partir da pasta do projeto irá desinstalar o pg do seu gemset de nível global / sistema em vez do bundlerERROR: While executing gem ... (NoMethodError) undefined method `delete' for #<Bundler::SpecSet:0x00000101142268>
Com as versões mais recentes do bundler, você pode usar a tarefa de limpeza:
editar:
Isso não é recomendado se você estiver usando um conjunto de gemas global (ou seja, todos os seus projetos mantêm suas gemas no mesmo lugar). Porém, existem algumas maneiras de manter as joias de cada projeto separadas:
rvm
gemsets ( http://rvm.io/gemsets/basics )bundle install
com qualquer uma das seguintes opções:--deployment
ou--path=<path>
( http://bundler.io/v1.3/man/bundle-install.1.html )fonte
bundle clean --force
removeu um monte de joias que eu não uso no meu projeto atual, mas uso em meus outros projetos. Eu deveria definir um caminho? Apenasbundle clean
retorna "Só pode usar bundle clean quando --path está definido ou --force está definido". Mas a--path
opção nem aparece na ajuda.clean
tarefa realmente não faz sentido se você estiver usando um conjunto de joias global. Mas se quiser, cada um de seus projetos pode ter suas joias separadas. Você pode fazer isso via rvm gemsets ( rvm.io/gemsets/basics ) ou especificando o caminho das gems por meio da--path
opçãobundle install
( bundler.io/v1.3/man/bundle-install.1.html )Você deve usar 'gem uninstall gem_name' para desinstalar uma gem.
Observe que se você instalou a gem em todo o sistema (ou seja, sudo bundle install), pode ser necessário especificar o diretório binário usando a opção -n, para garantir que os binários pertencentes à gem sejam removidos. Por exemplo
fonte
Parece que resolvi isso removendo manualmente a gema do unicórnio por meio do bundler ("sudo bundler exec gem uninstall unicórnio") e, em seguida, agrupando novamente ("sudo bundle install").
Não sei por que isso aconteceu, embora a correção acima pareça funcionar.
fonte
Se você quiser limpar todas as suas joias e começar de novo
fonte
Bundler agora tem um
bundle remove GEM_NAME
comando (desde v1.17.0, 25 de outubro de 2018 ).fonte