Bundler: Vous essayez d'installer en mode de déploiement après la modification de votre Gemfile
Je suis assez nouveau à bundler et de capistrano, et je suis en train de les utiliser ensemble. Lorsque j'essaie de déployer, je reçois le message:
Vous essayez d'installer en mode de déploiement après la modification de votre Gemfile. Run `bundle install' ailleurs et ajouter la mise à jour Gemfile.verrouillage de contrôle de version.
Je ne sais pas comment satisfaire le système de se plaindre, et je ne comprends pas pourquoi la plainte est à venir parce que j'ai lu dans le doc:
Si un Gemfile.verrouillage n'existe pas, et que vous avez mis à jour votre Gemfile(5),
bundler va utiliser les dépendances dans le Gemfile.verrouillage de toutes les gemmes
que vous n'avez pas de mise à jour, mais re-résoudre les dépendances de gemmes
que vous avez fait la mise à jour. Vous pouvez trouver plus d'informations sur cette mise à jour
le processus ci-dessous en vertu de l'CONSERVATEUR de la mise à JOUR.
- Je interpréter cela comme voulant dire que le Bundler peut gérer le fait que mon Gemfile n'est pas ce qu'il attend. Toute aide?
Spécifications: Ruby 1.9.3, Rails 3.2.3, Capistrano Version 2.12.0, Bundler 1.1.4, Windows 7, le déploiement d'une Posix machine.
Edit: Mon Gemfile inclut la logique des blocs comme suit:
unless RbConfig::CONFIG['host_os'] === 'mingw32'
# gem 'a' ...
end
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur que vous obtenez concernant
Gemfile.lock
peut-être parce que votreGemfile
etGemfile.lock
ne sont pas d'accord les uns avec les autres. Il semble que vous avez changé quelque chose dans votre Gemfile depuis la dernière exécution de l'bundle install
(ouupdate
). Lorsque vousbundle install
, il met à votre Gemfile.serrure avec toutes les modifications que vous avez apportées au Gemfile.Assurez-vous d'exécuter
bundle install
localement, et le check-in de contrôle de la source de votre nouvelle mise à jourGemfile.lock
après. Ensuite, essayez de déploiement.Modifier: ainsi Que l'a reconnu dans les commentaires, une condition dans le Gemfile a entraîné une valide Gemfile.verrouiller sur une plate-forme, non valable sur l'autre. Offrant une forme :plate-forme drapeau pour ces dépend de la plateforme, des pierres précieuses dans le Gemfile devrait résoudre l'asymétrie.
unless RbConfig::CONFIG['host_os'] === 'mingw32'
? (Ergo, il devrait bundle différents éléments sur mon ordinateur windows que sur le serveur linux.):platforms
drapeau pour les gemmes qui ma prod (posix) serveur nécessaire mais qui n'étaient pas sur mon dev (win) serveur fait la différence:platforms :ruby do; gem 'mygem'; ...; end
(Vous obtenez le vert de vérifier si vous n'avez pas l'esprit en ajoutant cette instruction de votre réponse.):require
, fonctionne bien aussi stackoverflow.com/a/16475580/933358vi .bundle/config
changer le BUNDLE_FROZEN option de '1' à '0'
faire "bundle install"
OU
run "bundle config"
voir si le "gel" de la valeur est true défini à false
bundle config congelés faux
bundle config frozen false
est mon goto correctif. Merci beaucoup, deux ans déjà! Je crois que Joshua Pinter réponse adresses le commentaire ci - dessus, il peut être le global Bundler config impact cette.bundle config frozen false
n'a rien fait pour moi. Eu recours à l'édition .bundle/config dans lequel l'entrée BUNDLE_FROZEN = "true" (textuel vrai)Watch out for global Bundler config.
J'ai eu un mondial de config sur mon environnement de dev dans
~/.bundle/config
que je n'ai pas eu dans mon IC /environnement de Production qui a causé laGemfile.lock
qui a été généré dans mon environnement de dev pour être différent de celui dans mon IC /environnement de Production.Dans mon cas, j'ai été la mise
github.https
de vrai dans mon environnement de dev, mais n'avait pas une telle config dans mon IC /environnement de Production. De ce fait, les deuxGemfile.lock
fichiers différents.Quand vous voyez la suite...
... Alors, le problème est probablement que vous avez dépassées .gem fichiers dans votre vendor/cache.
Peut-être, vous avez déjà exécuté
$bundle install --deployment
qui a mis un peu "dépassé" .gem fichiers dans le cache?Dans tous les cas, vous pouvez passer cette erreur en cours d'exécution:
bundle install --no-deployment
C'est l'une des nombreuses grandes choses sur les Rails... les messages d'erreur souvent de vous dire exactement quoi faire pour résoudre le problème.
La solution pour moi a été légèrement différent de ce que les autres énumérés ici. J'ai essayé de mettre à niveau à partir de sidekiq à sidekiq-pro (ce qui nécessite bundler 1.7.12+), mais j'ai continué à obtenir le "Vous essayez d'installer en mode de déploiement après la modification de votre Gemfile" message de travis-ci
L'inspection de la sortie de la console de travis-ci a révélé qu'une ancienne version de bundler a été utilisé.
Dans mon cas, j'ai dû modifier le travis.fichier yml pour ajouter:
before_install:
- gem update bundler
Cela a forcé travis-ci d'utiliser la dernière version de bundler, et fait le message d'erreur en aller.
cap shell
etgem update bundler
ouwith <role> gem update bundler
ouon <machine> gem update bundler
Mon problème était lié à ce que rapporté par @JoshPinter, c'est à dire dev-vs-déployer accueil des écarts dans le protocole utilisé par bundler pour récupérer des gemmes à partir de github.
Pour faire une longue histoire courte, tout ce que je devais était de modifier les
Gemfile
entrée......à l'établissement de cette syntaxe (voir la référence):
Et mes déploiements sont de retour à la normale.
Résolu le problème pour moi.
Je suis tombé sur quelque chose de semblable auparavant. Un moyen pour résoudre ce problème, je pense, mais peut prendre plus d'espace sur votre serveur que vous voulez, c'est pour exécuter
et puis essayer de le déployer. Cela fait quelque chose comme installer tous vos bijoux dans le fournisseur de dossier, qui je crois est généralement bonne à éviter... mais il faudra probablement travailler. Mon application est utilisée pour se comporter comme ça, ma solution a été de retirer versions exactes de télécharger à partir de mon Gemfile, puis rebundling et le déploiement.
à
Ou vous pouvez faire ce qu'il suggère, et Git de votre projet sur le serveur de production sur une machine locale, le bundle, et puis repush sur votre serveur. Cette solution peut ne pas être 100% correct, mais certains de il a travaillé pour moi... juste pensé que je vous ferais partager. Goodluck
--deployment
drapeau n'a pas de faire une différence, à moins que j'ai supprimé le Gemfile.verrouillage. C'est que la façon dont il est censé être?Une autre cause de l'erreur:
C'est un peu stupide, mais je suis sûr que quelqu'un va faire la même erreur.
Pour les Rails 4 Heroku ajouté le gem rails_12factor. Si vous l'utilisiez avant d'ajouter, alors vous aurez ces deux joyaux:
Vous devez les enlever lorsque vous ajoutez un nouveau. (elles sont incluses). Je pense que vous pouvez sortir avec elle jusqu'à ce que vous les touchez lignes dans votre fichier gem, puis Heroku avis de la duplication et crie à l'erreur ci-dessus.
bonne chance avec Rails 4.
Dans notre cas, nous avons été à l'aide d'une fonctionnalité qui n'était pas disponible dans une version ancienne de bundler qui a couru sur notre machine de production. Par conséquent, il a été suffisant pour la mise à niveau bundler, c'est à dire faire un
gem update bundler
.Cela pourrait être une idée dangereuse, mais si on doit absolument la tester quelque chose dans une production de déployer de l'environnement, vous pouvez modifier la .bundle/fichier de config
D'invoquer bundle, dans mon cas, j'avais besoin d'une mise à jour spécifique gem, donc cela ma commande
Vous devrez probablement changer de nouveau après la mise à jour, de sorte que les choses fonctionnent comme vous le souhaitez, par la suite. Encore une fois, ce n'est probablement pas pris en charge, et YMMV
Je suis tombé sur cette déploiement d'un Nesta application après quelques gem mises à jour. Ce qui a fonctionné pour moi a été de supprimer le Gemfile.verrouillage, exécutez
bundle install
de re-générer et déployer à nouveau.J'ai rencontré un problème similaire, cependant j'ai fait les deux
bundle install
etbundle update
et Heroku toujours rejeté ma poussée.J'ai résolu le problème tout simplement en supprimant Gemfile.de verrouillage, puis en exécutant
bundle install
de nouveau. J'ai ensuite ajouté, commis, et poussaient à mon repo git. Après cela, j'ai eu aucun problème à le pousser à Heroku.pour heroku, vous n'avez pas à modifier la syntaxe dans le
Gemfile
. vous pouvez simplement ajouterBUNDLE_GITHUB__HTTPS
(notez le double trait de soulignement) comme une variable d'environnement et de le régler àtrue
(dans votre heroku de l'application de tableau de bord sous laSettings
dans l'ongletConfig Vars
section). la commutation du protocole degit://
àhttps://
pour toutes ces demandes.J'ai eu le message d'erreur lors de la tentative de push Heroku. J'ai trouvé la solution suivante fixe.
Ce problème peut être lié à des submodules pointant vers les anciennes versions de code. Pour moi, j'ai résolu ce problème en mettant à jour mon submodules
Si vous avez des submodules, essayez de lancer:
git submodule update --init
bundle install
Après cette commande, vous pouvez le faire normal de votre bundle install de nouveau:
J'ai lu une douzaine de solutions sur les différentes ressources, mais ne trouvez pas exactement ce qui pourrait m'aider dans cette situation
Je n'ai donc trouver une solution. Exactement en disant: j'ai lu le message d'erreur attentivement et il y avait une solution: bundle installer ailleurs. "Ailleurs" a été mon Cloud9 où j'ai développé mon application. Mes pas
rsync
commandebundle install
. dans ce cas, vous aurez un changé version de Gemfile.verrouillagersync
bundle install --deployment --without development test
FAIT! Souhaitons BONNE chance à tous!