versiones ver rails mac instalar gems all ruby rubygems bundler

ruby - ver - Cómo reinstalar una gema usando bundler



ver version de rails (7)

Primero hice una gem q --L , el atajo para gem query --local . Me da todas las gemas locales instaladas.

actionmailer (3.2.8, 3.2.6, 3.2.1, 3.1.0) actionpack (3.2.8, 3.2.6, 3.2.1, 3.1.0) activemodel (3.2.8, 3.2.6, 3.2.1, 3.1.0) activerecord (3.2.8, 3.2.6, 3.2.1, 3.1.0) activeresource (3.2.8, 3.2.6, 3.2.1, 3.1.0) activesupport (3.2.8, 3.2.6, 3.2.1, 3.1.0) acts-as-taggable-on (2.3.3) ...

Y luego, siguiendo los consejos de DVG, desinstalé la gema utilizando su nombre correcto. gem uninstall acts-as-taggable-on y ejecuté la bundle install . Después de eso, pude rails c o rails s nuevo sin ningún problema.

Hice un bundle show y obtuve la ruta completa a un directorio de gemas.

Desafortunadamente, rm -r gem_path el directorio usando rm -r gem_path . Entonces mi aplicación de rieles ya no funciona. Si intento iniciar el servidor o iniciar la consola de rails, se genera el siguiente error:

<class:Application> : constante no inicializada MyAPP::Application::Gem (NameError)

¿Qué debo hacer para recuperarlo?

Intenté bundle install o la bundle update con la esperanza de forzar al paquete a buscar la gema e instalarla de nuevo, pero no funcionó.

También intenté eliminar Gemfile.lock y ejecutar bundle install . Nada cambió, el mismo error.

La gema en cuestión es Actuar como etiquetable .


Si usa RVM con gemas en ~/.rvm/ , esto funciona si el bundle no está reinstalando una gema.

Primero, elimine la fuente de la gema:

bundle show $GEM rm -rf $PATH_TO_GEM

Borrar la caché de gemas compiladas:

rm -rf ~/.rvm/gems/ruby-$RUBYVERSION[@$GEMSET]/cache/$GEM.gem

También borre la caché de especificaciones del paquete:

rm -rf ~/.rvm/gems/ruby-$RUBYVERSION[@$GEMSET]/specifications/$GEM*gemspec

Luego puedes volver a instalar:

bundle install


Desde el directorio del proyecto en la terminal

gem uninstall gem_name


Siempre puedes usar:

gem pristine acts-as-taggable-on

pristine - Restaura gemas instaladas a condición prístina de archivos ubicados en el caché de gemas

Si solo quieres restaurar la gema para el proyecto actual, deberías ejecutar:

bundle exec gem pristine acts-as-taggable-on


Si intenta reinstalar el rastrillo, el rastrillo gem pristine rake fallará con Skipped rake-10.XX, it is a default gem y el paquete tampoco lo instalará, porque no puede desinstalarlo.

Si está utilizando rvm, parece que lo más fácil es simplemente hacer una rvm reinstall 2.xx Al menos para mí, la rvm repair all tampoco me ayudó.

Lo mismo probablemente se aplique a todas las demás gemas predeterminadas. Voy a enumerarlos aquí para que los desesperados googlers encuentren algo de ayuda:

  • bigdecimal
  • goteo
  • io-console
  • json
  • minitest
  • psicoanalizar
  • rastrillo
  • rbtree
  • rdoc
  • unidad de prueba

Si usa rbenv, esto le permitirá desinstalar completamente y volver a instalar una gema como rmagick:

Primero: pruebe una desinstalación / reinstalación simple

gem uninstall rmagick bundle install

Si eso no funciona, puede eliminar todo el rastro de la gema instalada. Encuentra tu ubicación de instalación de gemas:

bundle show rmagick BUNDLE_DIR=$(dirname $(dirname $(bundle show rmagick))) echo $BUNDLE_DIR

Su prefijo de instalación de gemas será el predeterminado, por ejemplo, ~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0 o algo que configure, por ejemplo, .vendor

Borrar el directorio de gemas:

rm -rf $BUNDLE_DIR/gems/rmagick-*

Borrar la caché de gemas compiladas:

rm $BUNDLE_DIR/cache/rmagick*.gem

También borre la caché de especificaciones del paquete:

rm $BUNDLE_DIR/specifications/rmagick*gemspec

Luego puedes volver a instalar:

bundle install


Si ha instalado en ./bundle/vendor o similar, primero debe eliminar la gema pero especificar explícitamente la GEM_HOME, por ej.

GEM_HOME=./vendor/bundle/ruby/2.3.0/ gem uninstall rmagick

Esta es la forma más simple de desinstalar gemas instaladas usando bundler en un directorio de proveedores. Idealmente, habría una bundle uninstall comando o una bundle reinstall , etc.

Si su objetivo es simplemente reinstalar, el siguiente comando ayudará:

GEM_HOME=./vendor/bundle/ruby/2.3.0/ gem uninstall rmagick && sudo -u http bundle install

Si eres como yo y tienes varias aplicaciones web en un directorio (por ejemplo, /srv/http ), lo siguiente lo hago en todos los directorios:

cd /srv/http for d in ./*/ ; do (cd "$d" && sudo -u http GEM_HOME=./vendor/bundle/ruby/2.4.0/ gem uninstall --force rmagick && sudo -u http bundle install); done