web-dev-qa-db-fra.com

Vous devez utiliser Bundler 2 ou supérieur avec ce fichier de verrouillage

Je travaille avec heroku et chaque fois que j'essaie de pousser mon application, ce message apparaît:

remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: 
remote:  !
remote:  !     You must use Bundler 2 or greater with this lockfile.
remote:  !
remote: /tmp/d20181109-104-g861yi/bundler-1.15.2/gems/bundler-1.15.2/lib/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
remote:     from /tmp/d20181109-104-g861yi/bundler-1.15.2/gems/bundler-1.15.2/lib/bundler/lockfile_parser.rb:95:in `initialize'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/bundler_wrapper.rb:130:in `new'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/bundler_wrapper.rb:130:in `block in parse_gemfile_lock'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:18:in `block (2 levels) in instrument'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:40:in `yield_with_block_depth'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:17:in `block in instrument'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/vendor/Ruby/heroku-18/lib/Ruby/2.5.0/benchmark.rb:308:in `realtime'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/instrument.rb:16:in `instrument'
remote:     from /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/bundler_wrapper.rb:86:in `instrument'
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to my-proyect-1234.
remote: 

Il dit 'à distance:! Vous devez utiliser Bundler 2 ou supérieur avec ce fichier de verrouillage. '

Mais ma version de Bundler est 2.0.0.pre.1

Je ne sais pas quoi faire, j'ai essayé de désinstaller bundle et de l'installer à nouveau, j'ai errased le Gemfile.lock et en tapant bundle encore

20
Pedro

J'ai supprimé le projet et créé un clone git à partir de l'application Heroku. Je ne sais pas si c'est une bonne solution, mais cela a fonctionné pour moi.

0
Pedro

Un peu tard pour la soirée, mais je viens de le rencontrer aujourd'hui aussi, et cette solution évite de désinstaller Bundler: il suffit de lancer

heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2

selon la discussion sur la question de Bundler ici .

29
Alex

J'ai eu le même problème sur Local Machine (Development) as-

Vous devez utiliser Bundler 2 ou supérieur avec ce fichier de verrouillage.
Le problème était avec gemfile.lock parce que la version de mon lot local et la version de mon lot de projets ne correspondaient pas! Voici la solution

  1. J'ai supprimé gemfile.lock
  2. Exécutez la commande - bundle install
    Cela a résolu mon problème, il est lisse! L'espoir fonctionnera pour d'autres!
17
S.Yadav

J'ai eu une expérience similaire.

voici comment je l'ai résol

Affichez une liste de toutes vos gemmes locales pour la gemme de groupement.

gem list bundler

N/B: La commande ci-dessus est pour le gestionnaire de versions de rbenv, celle de rvm peut être différente

Cela affichera les versions de la gem de bundler installée localement

bundler (2.0.2, default: 1.17.2)

si vous ne possédez pas la version 2 de bundler installée localement, exécutez

gem install bundler

OR

gem install bundler -v 2.0.2

si la version 2 de bundler est déjà installée localement ou vient de l’être, il vous suffit d’installer une mise à jour pour RubyGems Package Manager localement. Pour ce faire, lancez

gem update --system

Et puis enfin courir

bundler update --bundler

C'est tout.

J'espère que cela aide.

10
Promise Preston

Oui, donc généralement désinstaller votre version de bundler, retirer le gemfile.lock, et enfin exécuter gem install bundler -v 1.15.2 (qui est la version utilisée par heroku) a fonctionné.

Après cela, exécuter git Push heroku master a fonctionné!

3
Aleksander Jess

J'ai résolu ce problème en exécutant gem uninstall bundler pour supprimer 2.0.0.pre.1, en renommant le fichier Gemfile.lock (pour le retirer de l'utilisation), puis en exécutant bundle install pour réinstaller les fichiers gem. Dans mon cas, j’avais déjà accès à la version précédente de bundler installée par heroku (ainsi, lorsque j’exécutais gem uninstall, toutes les versions disponibles m’étaient affichées et j’avais choisi de supprimer la version 2.0.0.pre.1).

2
John Creamer

Même avec le bundler 2 sur le système, cette erreur survient toujours lors du déploiement d'une application avec Ruby 2.6 car Ruby 2.6 est livré avec une version par défaut de bundler.

Si vous utilisez Ruby 2.6, effectuez une mise à niveau vers Ruby 2.6.1 pour éviter ce problème.

2
Sergey

Heroku n'utilise pas Bundler 2.0, mais 1.15.2, comme l'indique le tracelog.

Pour autant que je sache, la "solution de contournement" consiste à créer votre propre buildpack, ou un simple fork avec le leur:

Ouvrez lib/language_pack/Ruby.rb dans votre éditeur et modifiez la ligne suivante:

BUNDLER_VERSION = "1.11.2"

(README.md sur https://github.com/heroku/heroku-buildpack-Ruby )

Mise à jour : À partir de Ruby 2.6.1 et de Bundler 2.0.1, Heroku prend désormais en charge Bundler 2.0.1. https://devcenter.heroku.com/articles/bundler-version#known-upgrade-issues

Ceci est pas le cas de Ruby 2.6.0, car ceci est invoqué à tort à partir de binstubs, comme @Schneems l'a mentionné dans le commentaire. Il a gentiment signalé cela comme un Ruby Bug # 15622

1
Frederik Spang

Pour système local

gem install bundler:2.0.0.pre.1
bundle _2.0.0.pre.1_ install

Où "2.0.0.pre.1" correspond à la version à regrouper.

Ne supprimez pas votre Gemfile.lock pour cela, c'est pour une raison .

0
Arye Eidelman

J'ai eu le même problème dans mon système local, ma version de Ruby était basse en raison de l'erreur survenue. Corrigé en basculant sur les versions mises à jour de Ruby.

0
Dyaniyal Wilson

J'ai le même problème pour Ruby 2.6.3, rien dans la liste des réponses ne pourrait aider. La seule solution suivante a fonctionné pour moi:

  1. bundle update Rails

  2. Supprimer Gemfile.lock

  3. bundle

0
Timo Moss

Pour les personnes qui n'utilisent pas Heroku :

J'ai tout essayé et je recevais toujours cette erreur. même ce lien ne m'a pas aidé: https://github.com/jekyll/jekyll/issues/746

Donc c'était ma solution:

Poussez votre code sur GitHub. supprimer le dossier du projet, créer un nouveau dossier et extraire votre groupe de codes. bundler update --bundler ne m'aidait pas à la fin et je ne l'utilisais pas.

Encore une chose importante: j’ai mis à jour ma version de Ruby mais j’obtenais cette erreur, car ma version par défaut de RVM était une ancienne version. même lorsque vous utilisez rvm use VERSION_NUMBER -- default ne vous aidera pas, car dès que vous vous déconnecterez du terminal, la version par défaut deviendra l'ancienne et vous aurez le même problème.

Pour cela, vous pouvez utiliser cette réponse: Comment définir la version par défaut de Ruby avec RVM?

ou simplement désinstaller l'ancienne version de Ruby avec rvm uninstall X.X.X et installer la nouvelle avec rvm install X.X.X et la définir par défaut avec rvm use --default X.X.X.

à votre santé.

0
Navid Farjad