ruby-on-rails-3 - what - ruby installed gems
¿Cuál es la mejor manera de desinstalar gemas de un proyecto de rails3? (6)
Instalé todas mis gemas utilizando bundler a través del Gemfile. Pensé (erróneamente) que si eliminaba una gema de mi Gemfile y ejecutaba ''paquete de instalación'', las gemas eliminadas serían desinstaladas. Miré el archivo de ayuda del paquete y, hasta donde puedo ver, no tiene forma de desinstalar las gemas.
¿Solo uso gem uninstall x para todo? ¿Esto va a confundir a bundler?
Bundler se inicia desde el directorio raíz de la aplicación, de modo que se asegure de que todas las gemas necesarias estén presentes para que tu aplicación funcione. Si por alguna razón ya no necesitas una gema, deberás ejecutarla.
gem uninstall gem_name
como dijiste anteriormente. Por lo tanto, cada vez que ejecutas bundler 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 cuando mantienes tus gemas globales. Considere usar un administrador de gemas como rbenv o rvm para mantener conjuntos de gemas con alcance para proyectos específicos.
Esto significa que no se instalarán gemas a nivel global y, por lo tanto, cuando elimine uno 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 desde su Gemfile (en el mismo directorio) pero en este momento dado ya no se enumeran allí .... larga historia corta - elimina las gemas no utilizadas.
Con las versiones más nuevas de bundler puedes usar la tarea clean:
$ bundle help clean
Usage:
bundle clean
Options:
[--dry-run=only print out changes, do not actually clean gems]
[--force=forces clean even if --path is not set]
[--no-color=Disable colorization in output]
-V, [--verbose=Enable verbose output mode]
Cleans up unused gems in your bundler directory
$ bundle clean --dry-run --force
Would have removed actionmailer (3.1.12)
Would have removed actionmailer (3.2.0.rc2)
Would have removed actionpack (3.1.12)
Would have removed actionpack (3.2.0.rc2)
Would have removed activemodel (3.1.12)
...
editar:
Esto no se recomienda si está usando un gemset global (es decir, todos sus proyectos mantienen sus gemas en el mismo lugar). Sin embargo, hay algunas maneras de separar 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 )
Debes 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), puede que necesite especificar el directorio binario con la opción -n, para asegurarse de que los binarios que pertenecen a la gema se eliminen. Por ejemplo
sudo gem uninstall gem_name -n /usr/lib/ruby/gems/1.9.1/bin
Esto desinstalará una gema instalada por bundler:
bundle exec gem uninstall GEM_NAME
Tenga en cuenta que esto arroja
ERROR: al ejecutar gema ... (NoMethodError) método indefinido `eliminar ''para # <Bundler :: SpecSet: 0x00000101142268>
pero la gema en realidad se elimina. La próxima vez que ejecute bundle install
la gema será reinstalada.
Me pareció resolver esto al eliminar manualmente la gema del unicornio a través de bundler ("sudo bundler exec gem uninstall unicorn"), y luego rebundling ("sudo bundle install").
Sin embargo, no estoy seguro de por qué sucedió, aunque la solución anterior parece funcionar.
Si quieres limpiar todas tus gemas y empezar de nuevo
sudo gem clean