Pregunta carriles paquete limpio


Después de actualizar un paquete, tendrá algunas gemas que pueden estar obsoletas, ya que se ha instalado una versión más nueva de esa gema. No hay tal comando debajo del bundle ejecutable, es decir bundle clean. ¿Cómo se puede deshacer de estas gemas obsoletas?

Este es un intento de reducir el tamaño de las babosas en mi aplicación de rieles.


75
2017-10-26 15:36


origen


Respuestas:


Si está utilizando Bundler 1.1 o posterior, puede usar bundle clean, tal como imaginabas que podrías. Esto es redundante si estás usando bundle install --path (Bundler administra la ubicación que especificó con --path, por lo que asume la responsabilidad de eliminar las gemas obsoletas), pero si usó Bundler para instalar las gemas como gemas del sistema, entonces bundle clean --force eliminará cualquier gema del sistema no requerida por su Gemfile. Una advertencia cegadoramente obvia: ¡no hagas esto si tienes otras aplicaciones que dependen de las gemas del sistema que no están en tu Gemfile!

Pat Shaughnessy tiene una buena descripción de bundle clean y otras nuevas adiciones en bundler 1.1.


118
2018-04-17 11:47



Si está utilizando RVM, puede usar rvm gemset empty para el gemset actual - este comando eliminará todas las gemas instaladas en el gemset actual (el propio gemset permanecerá en su lugar). Entonces corre bundle install para instalar versiones reales de gemas. También asegúrese de no eliminar gemas generales como rastrillo, paquete, etc. rvm gemset empty (Si es el caso, instálelos manualmente a través de gem install antes de bundle install)


34
2018-01-25 22:23



Si está utilizando RVM puede instalar sus gemas en gemas. De esta forma, cuando desee realizar una limpieza completa, simplemente puede eliminar el gemset, que a su vez elimina todas las gemas instaladas en él. Tu otra opción es simplemente desinstalar tus gemas sin usar y volver a ejecutar tu bundle install mando.

Dado que bundler está destinado a ser una herramienta de control de versiones de proyecto por proyecto, no proporciona una bundle clean mando. Hacerlo significaría la posibilidad de eliminar las gemas asociadas con otros proyectos también, lo que no sería deseable. Eso significa que probablemente el bundler sea la herramienta incorrecta para usar para administrar su directorio gem. Mi recomendación personal sería usar gemas de RVM para guardar sus gemas en ciertos proyectos o versiones ruby.


21
2017-10-26 16:03



Honestamente, tuve problemas con las dependencias circulares de bundler y la mejor manera de hacerlo es rm -rf .bundle. Sálvate el dolor de cabeza y solo usa el martillo.


10
2017-12-12 14:44



Supongo que instalas gemas en vendor/bundle? Si es así, ¿por qué no simplemente eliminar todas las gemas y hacer una limpieza bundle install?


1
2017-10-26 16:06



Al buscar una respuesta a la misma pregunta que encontré gem_unused.
También es posible que desee 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


1
2018-02-07 23:26



Solo elimina las gemas obsoletas de tu Gemfile. Si estás hablando de Heroku (no lo mencionaste), entonces la babosa se compila en cada nueva versión, simplemente usando el contenido actual de ese archivo.


0
2017-10-26 16:10