rails que hace gems from force ruby-on-rails ruby bundler

ruby-on-rails - gems - que hace bundle install



carriles paquete limpio (7)

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 existe dicho comando en el 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.



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


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. Su otra opción es simplemente desinstalar las gemas no utilizadas y volver a ejecutar el comando de bundle install .

Dado que bundler está destinado a ser una herramienta de creación de versiones de proyecto por proyecto, no proporciona un comando de bundle clean . 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.


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 gemset se mantendrá en su lugar). Luego ejecute bundle install para instalar versiones reales de gems. También asegúrese de no eliminar las gemas generales como rake, bundler, etc. durante rvm gemset empty (si es el caso, entonces instálelas manualmente a través de la gem install antes de bundle install ).


Si usa Bundler 1.1 o posterior, puede usar bundle clean , tal como lo imaginaba. Esto es redundante si está utilizando bundle install --path ( bundle install --path administra la ubicación que especificó con --path, por lo que asume la responsabilidad de eliminar las gemas obsoletas), pero si ha usado Bundler para instalar las gemas como gems del sistema, entonces bundle clean --force eliminará las gemas del sistema que no necesite tu 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 .


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.


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