paquete de rieles limpio


Después de actualizar un paquete, tendrá algunas gemas que pueden ser obsoletas since ya que se ha instalado una versión más reciente de esa gema. No hay tal comando bajo el ejecutable bundle, es decir, bundle clean. ¿Cómo se puede deshacerse de estas gemas obsoletas?

Este es un intento de reducir el tamaño de slug en mi aplicación rails.

Author: iGbanam, 2011-10-26

7 answers

Si está utilizando Bundler 1.1 o posterior, puede usar bundle clean, tal como imaginó que podría. Esto es redundante si está utilizando bundle install --path (Bundler administra la ubicación que especificó con path path, por lo que se responsabiliza de eliminar gemas obsoletas), pero si ha utilizado Bundler para instalar las gemas como gemas del sistema, entonces bundle clean --force eliminará las gemas del sistema que no sean requeridas por su Gemfile. Advertencia obvia: no hagas esto si tienes otras aplicaciones que dependen de 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.

 120
Author: David Waller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-17 11:47:13

Si está usando RVM puede usar rvm gemset empty para el conjunto de gemas actual - este comando eliminará todas las gemas instaladas en el conjunto de gemas actual (el propio conjunto de gemas permanecerá en su lugar). Luego ejecute bundle install para instalar versiones reales de gems. También asegúrese de no eliminar gemas generales como rake, bundler, etc. durante rvm gemset empty (si es el caso, instálelas manualmente a través de gem install antes de bundle install).

 34
Author: trushkevich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-25 22:23:53

Si está utilizando RVM, puede instalar sus gemas en gemsets. 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 las gemas no utilizadas y volver a ejecutar el comando bundle install.

Dado que bundler está destinado a ser una herramienta de versionado de gemas proyecto por proyecto, no proporciona un comando bundle clean. Hacerlo significaría la posibilidad de eliminar gemas asociadas con otros proyectos también, lo que no sería deseable. Eso significa que bundler es probablemente la herramienta incorrecta para administrar su directorio de gemas. Mi recomendación personal sería utilizar conjuntos de gemas RVM para sandbox sus gemas en ciertos proyectos o versiones de ruby.

 21
Author: Pan Thomakos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-25 13:32:58

Honestamente, tuve problemas con las dependencias circulares de bundler y la mejor manera de hacerlo es rm -rf .bundle. Ahorrarse el dolor de cabeza y usar el martillo.

 10
Author: Tyler Brock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-12 14:44:26

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

 1
Author: Leonid Shevtsov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 16:06:35

Al buscar una respuesta a la misma pregunta me encontré con 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
Author: JJD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-07 23:26:15

Simplemente elimine las gemas obsoletas de su Gemfile. Si estás hablando de Heroku (no lo mencionaste) entonces el slug se compila cada nueva versión, simplemente usando el contenido actual de ese archivo.

 0
Author: Gareth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 16:10:56