Después de actualizar un paquete, tendrá algunas gemas que pueden estar obsoletas, ya que se instaló una versión más nueva de esa gema. No existe tal comando en el bundle
ejecutable, es decir bundle clean
. ¿Cómo deshacerse de estas gemas obsoletas?
Este es un intento de reducir el tamaño de las babosas en mi aplicación rails.
fuente
bundle clean --force
no toca sus gemas globales, sino solo las de su conjunto de gemas actual. Entoncesbundle clean --force
produce el mismo resultado que y es más rápido quervm gemset empty
seguido debundle install
.Si está utilizando RVM, puede usarlo
rvm gemset empty
para el conjunto de gemas actual: este comando eliminará todas las gemas instaladas en el conjunto de gemas actual (el conjunto de gemas en sí permanecerá en su lugar). Luego, ejecutebundle install
para instalar versiones reales de gemas. También asegúrese de no eliminar gemas generales como rake, bundler, etc. durantervm gemset empty
(si es el caso, instálelas manualmente a través degem install
antesbundle install
).fuente
Si está utilizando RVM, puede instalar sus gemas en conjuntos de gemas . De esa manera, cuando desee realizar una limpieza completa, simplemente puede eliminar el conjunto de gemas, que a su vez elimina todas las gemas instaladas en él. Su otra opción es simplemente desinstalar sus gemas no utilizadas y volver a ejecutar su
bundle install
comando.Dado que el empaquetador está destinado a ser una herramienta de control de versiones de gemas proyecto por proyecto, no proporciona un
bundle clean
comando. Hacerlo significaría la posibilidad de eliminar gemas asociadas con otros proyectos también, lo que no sería deseable. Eso significa que el agrupador es probablemente la herramienta incorrecta para administrar su directorio de gemas. Mi recomendación personal sería utilizar los conjuntos de gemas RVM para proteger sus gemas en ciertos proyectos o versiones de rubí.fuente
Honestamente, tuve problemas con las dependencias circulares del paquete y la mejor manera de hacerlo es
rm -rf .bundle
. Ahórrese el dolor de cabeza y use el martillo.fuente
rvm implode --force
y luego reinstalar rvm¿Asumo que instalas gemas en
vendor/bundle
? Si es así, ¿por qué no simplemente eliminar todas las gemas y hacer una limpiezabundle install
?fuente
Al buscar una respuesta a la misma pregunta, encontré gem_unused .
También puede querer leer este artículo: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
El código fuente está disponible en GitHub: https://github.com/ apolzon / gem_unused
fuente
Simplemente elimine las gemas obsoletas de su Gemfile. Si estás hablando de Heroku (no lo mencionaste), entonces la babosa se compila en cada nueva versión, solo usando el contenido actual de ese archivo.
fuente
Simplemente ejecute, para limpiar gemas obsoletas y eliminar advertencias de impresión tras paquete.
fuente