32 votes

Impossible de mettre à jour les gems sur le serveur de production

Impossible de mettre à jour les gemmes sur le serveur de production.

J'ai essayé bundle install --deployment y bundle install --without development test

Mais continuez :

You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.

If this is a development machine, remove the Gemfile freeze 
by running `bundle install --no-deployment

EDIT

Je ne sais pas si c'est correct, mais j'avais besoin d'une solution rapide. J'ai lancé bundle install --no-deployment puis bundle update puis a couru bundle install --deployment à nouveau

46voto

Ryan Bigg Points 64561

Les instructions sont probablement un peu confuses. Il est dit que vous avez modifié votre Gemfile sur votre machine de développement et vous avez juste poussé ces changements plutôt que d'exécuter bundle install AVANT de valider les changements.

En courant bundle install vous mettrez à jour votre Gemfile.lock fichier. Il doit être poussé vers votre serveur car il est plus important que le fichier Gemfile . Considérons le Gemfile les plans pour le Gemfile.lock fichier.

N'oubliez jamais de :

  1. Ejecutar bundle install si vous changez votre Gemfile même juste pour être sûr. Si c'est trop lent, passez --local qui l'oblige à n'utiliser que les gemmes locales pour résoudre ses dépendances.
  2. Engagez-vous ambos le site Gemfile y Gemfile.lock à votre dépôt
  3. Déployer à la fois le Gemfile y Gemfile.lock à vos serveurs de production pour vous assurer qu'ils exécutent exactement les mêmes dépendances que votre environnement de développement.

Running bundle update par lui-même peut être interprété comme dangereux qui mettra à jour tous les dépendances de votre application. C'est surtout dangereux si vous n'avez pas de numéros de version solides spécifiés dans la section Gemfile . I a écrit à ce sujet ici.

9voto

TomL Points 474

J'ai eu ce problème et je l'ai résolu en supprimant certaines instructions conditionnelles de mon Gemfile (conditionnelles sur l'OS) et en relançant le bundle.

2voto

Jamsi Points 989

J'ai eu un problème avec mon serveur de production qui utilisait toujours une ancienne version d'une gemme, même si le fichier Gemfile.lock indiquait la version correcte et mise à jour. Mon serveur de production fonctionnait sous Unicorn - et l'arrêter / le redémarrer a réglé le problème - au lieu d'envoyer le signal HUP, qui n'a rien fait pour régler le problème.

1voto

randomcontrol Points 31

L'installation du bundle a échoué sur ma machine de "développement" à cause du mysql-gem sur osx...

J'avais aussi besoin d'une solution rapide. J'ai donc cloné le dépôt dans un nouveau dossier sur la machine de production, j'ai lancé "bundle install" à cet endroit et j'ai validé le fichier Gemfile.lock dans le dépôt.

1voto

Emil Rehhnberg Points 41

J'ai eu ce problème (Ubuntu 12.10 & 12.04, dont l'un derrière un serveur proxy). Mon problème était que j'avais des git:// dans le fichier Gemfile. En changeant cela en http:// m'a aidé à faire fonctionner tout ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X