Bundler se inicia desde el directorio raíz de su aplicación, por lo que se asegura de que todas las gemas necesarias estén presentes para que su aplicación funcione.Si por alguna razón ya no necesita una gema, tendrá que ejecutar el
gem uninstall gem_name
como dijiste anteriormente Entonces, cada vez que ejecutes el paquete, volverá a verificar las dependencias
EDITAR - 24.12.2014
Veo que la gente sigue llegando a esta pregunta. Decidí agregar algo. La respuesta que di fue para el caso en el que mantienes tus gemas a nivel mundial. Considere usar un administrador de gemas como rbenv o rvm para mantener los conjuntos de gemas dentro del alcance de proyectos específicos.
Esto significa que no se instalarán gemas a nivel global y, por lo tanto, cuando elimine una del Gemfile de su proyecto y vuelva a ejecutar el paquete, obviamente, no se cargará en su proyecto. Luego, puede ejecutar bundle clean (con el directorio del proyecto) y eliminará del sistema todas las gemas que una vez se instalaron de su Gemfile (en el mismo directorio) pero en este momento dado ya no se enumeran allí ... En pocas palabras: elimina las gemas no utilizadas.
gem uninstall pg
desde la carpeta del proyecto desinstalará pg de su conjunto de gemas de nivel global / sistema en lugar del paquete del paqueteERROR: While executing gem ... (NoMethodError) undefined method `delete' for #<Bundler::SpecSet:0x00000101142268>
Con las versiones más recientes de bundler, puede usar la tarea limpia:
editar:
Esto no se recomienda si está utilizando un conjunto de gemas global (es decir, todos sus proyectos mantienen sus gemas en el mismo lugar). Sin embargo, hay algunas formas de mantener separadas las gemas de cada proyecto:
rvm
gemsets ( http://rvm.io/gemsets/basics )bundle install
con cualquiera de las siguientes opciones:--deployment
o--path=<path>
( http://bundler.io/v1.3/man/bundle-install.1.html )fuente
bundle clean --force
eliminó un montón de gemas que no uso en mi proyecto actual, pero sí uso en mis otros proyectos. ¿Se suponía que debía establecer un camino? Simplementebundle clean
devuelve "Solo se puede usar la limpieza de paquetes cuando se establece --path o --force". Pero la--path
opción ni siquiera aparece en la ayuda.clean
tarea realmente no tiene sentido si está utilizando un conjunto de gemas global. Pero si lo desea, cada uno de sus proyectos puede tener sus gemas separadas. Puede hacerlo a través de rvm gemsets ( rvm.io/gemsets/basics ), o especificando la ruta de las gemas a través de la--path
opción debundle install
( bundler.io/v1.3/man/bundle-install.1.html )Debe usar 'gem uninstall gem_name' para desinstalar una gema.
Tenga en cuenta que si instaló la gema en todo el sistema (es decir, la instalación del paquete sudo), es posible que deba especificar el directorio binario usando la opción -n, para asegurarse de que se eliminen los binarios que pertenecen a la gema. Por ejemplo
fuente
Me pareció que resolví esto eliminando manualmente la gema de unicornio a través del paquete ("sudo bundler exec gem uninstall unicorn"), luego reagrupando ("sudo bundle install").
Sin embargo, no estoy seguro de por qué sucedió, aunque la solución anterior parece funcionar.
fuente
Si quieres limpiar todas tus gemas y empezar de nuevo
fuente
Bundler ahora tiene un
bundle remove GEM_NAME
comando (desde v1.17.0, 25 de octubre de 2018 ).fuente