Bundler: je moet Bundler 2 of hoger gebruiken met deze lockfile

Ik werk met heroku en elke keer als ik mijn app probeer te pushen, verschijnt dit bericht:

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: 

het zegt ‘afstandsbediening:! U moet Bundler 2 of groter gebruiken met deze lockfile. ‘

Maar mijn Bundler-versie is 2.0.0.pre.1

Weet niet wat ik moet doen, ik heb geprobeerd het verwijderen van bundel te verwijderen en het opnieuw te installeren, ik heb het gemefile.lock en het typen bundleopnieuw


1, Autoriteit 100%

Ik had een soortgelijke ervaring.

Hier is hoe ik het heb opgelost

Geef een lijst weer van al uw lokale edelstenen voor het BUNDLER GEM

gem list bundler

N / B : de bovenstaande opdracht is voor RBENV-versiemanager, die voor RVM kan verschillend zijn

Hiermee worden de lokaal geïnstalleerde versies van de bundel-edelsteen weergegeven

bundler (2.1.4, default: 1.17.2)

Opmerking: uw versies kunnen verschillen van die hier

als je bundelversie 2 niet lokaal hebt geïnstalleerd, voer dan uit

gem install bundler

OF

gem install bundler -v 2.1.4

Opmerking: vervang 2.1.4door de versie die u wilt installeren

Als je bundelversie 2 al lokaal hebt geïnstalleerd of net hebt geïnstalleerd, dan moet je gewoon een update voor RubyGems Package Manager lokaal installeren. Voer hiervoor

. uit

gem update --system

En dan eindelijk rennen

bundle update --bundler

Voor Docker-projecten in Ruby on Rails

Als u dit probleem ondervindt bij het bouwen van uw toepassing met Docker, doet u dit:

  1. Verwijder het bestand Gemfile.lock

  2. Alsjeblieft nietmaak het opnieuw door bundle installuit te voeren.

  3. Voer uw opdracht docker buildof docker-compose builduit om uw project te bouwen.

Hiermee wordt het bestand Gemfile.lockopnieuw gemaakt en wordt de juiste versie van de bundelaar ingesteld die nodig is voor uw project in het bestand Gemfile.lock.

N/B: Terzijde: je kunt deze omgevingsvariabele ook toevoegen aan je Dockerfilemet de Bundler-versie gedefinieerd.

ENV BUNDLER_VERSION=2.1.4

Dat is alles.

Ik hoop dat dit helpt.


Antwoord 2, autoriteit 18%

Een beetje laat voor het feest, maar ik kwam dit vandaag ook tegen, en deze oplossing voorkomt dat Bundler moet worden verwijderd: gewoon uitvoeren

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

volgens de discussie over het Bundler-probleem hier.


Antwoord 3, autoriteit 16%

Ik had hetzelfde probleem op Local Machine(Development) als-

Je moet Bundler 2 of hoger gebruiken met dit vergrendelingsbestand.
Het probleem was met gemfile.lockomdat mijn lokale bundelversie en projectbundelversie niet overeenkwamen!
Hier is een oplossing-

  1. Ik heb gemfile.lock verwijderd
  2. Voer de opdracht uit – bundle install
    Dat loste mijn probleem op, het is glad!
    Hoop zal voor anderen werken!

Antwoord 4, autoriteit 3%

Zelfs met bundler 2 op het systeem treedt deze fout nog steeds op bij het implementeren van een app met Ruby 2.6, aangezien Ruby 2.6 wordt geleverd met een standaardversie van bundler.

Als je Ruby 2.6 gebruikt, upgrade dan naar Ruby 2.6.1 om dit probleem te voorkomen.


Antwoord 5, autoriteit 2%

eenvoudige gem update bundlerdeed het voor mij.


Antwoord 6, autoriteit 2%

YUP, dus over het algemeen Uw versie van Bundler verwijderen , het verwijderen van de gemfile.lock , en eindelijk uitgevoerd gem install bundler -v 1.15.2(welke is de versie die Heroku gebruikt) werkte.

NA dat draaien git push heroku masterWerkte!


7, Autoriteit 2%

De Ruby 2.6.0 is niet het geval van dit probleem.
De standaardversie van Bundler onjuist aangeroepen bij het gebruik van bin-stubs.
Raadpleeg voor meer informatie de volgende link

oplossing:
Bundler 2 is beschikbaar op het systeem en is de nieuwste versie, dus het moet worden aangeroepen in plaats van de standaard Bundler-versie.

Update RubyGEMS

gem update --system

Update Bundler

gem install bundler

update gemfile.lock in uw project

bundler update --bundler

8

Ik heb dit probleem opgelost door het uitvoeren van gem uninstall bundlerom 2.0.0.pre.1 te verwijderen, hernoemd naar het gemfile.lock-bestand (om deze van gebruik te verwijderen) en vervolgens onder meer dan bundle installom de Gemfiles opnieuw te installeren. In mijn geval had ik al toegang tot de eerder geïnstalleerde Bundler-versie die is geïnstalleerd door Heroku (dus toen ik gem uninstall, kreeg ik alle versies beschikbaar en koos ervoor om 2.0.0.pre.1 te verwijderen).


9

voor lokaal systeem

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

waar “2.0.0.pre.1” is, is welke versie u nodig heeft om mee te bundelen.

Verwijder hiervoor uw Gemfile.lock niet, het is er met een reden.


Antwoord 10

Heroku gebruikt Bundler 2.0 niet, maar 1.15.2, zoals de tracelog aangeeft.

Voor zover ik weet, is de “oplossing” om je eigen buildpack te maken, of eenvoudig hun eigen buildpack te maken:

Open lib/language_pack/ruby.rb in je editor, en verander de volgende regel:

BUNDLER_VERSION = "1.11.2"

(README.md op https://github.com/heroku/heroku-buildpack- robijn)

Update: vanaf Ruby 2.6.1 en Bundler 2.0.1 ondersteunt Heroku nu Bundler 2.0.1. https://devcenter.heroku.com/articles/bundler-version# bekende-upgrade-problemen

Dit is niethet geval voor Ruby 2.6.0, omdat dit ten onrechte wordt aangeroepen vanuit binstubs, zoals @Schneems in de opmerking heeft vermeld. Hij heeft dit vriendelijk gemeld als een Ruby Bug #15622


Antwoord 11

Ik heb hetzelfde probleem met Ruby 2.6.3, niets in de antwoorden kan helpen.
De enige volgende oplossing werkte voor mij:

  1. bundle update rails

  2. Gemfile.lock verwijderen

  3. bundle


Antwoord 12

Ik kreeg hetzelfde probleem in mijn lokale systeem, mijn ruby-versie was laag waardoor de fout optrad. Repareerde het door het over te schakelen naar bijgewerkte versies van ruby.


Antwoord 13

Voor mensen die Heroku niet gebruiken:

Ik heb alles geprobeerd en ik ontving deze fout nog steeds. Zelfs deze link heeft me niet geholpen: https://github.com/jekyll/jekekyl/issues / 7463

Dus dit was mijn oplossing:

Druk op uw code op GitHub.
Projectmap verwijderen
Maak een nieuwe map en trek uw code aan
bundel installeren
Dat is het. Bundler-update – Bunderler hielp me niet aan het einde en ik heb het niet gebruikt.

Nog een belangrijker:
Ik heb mijn Ruby-versie bijgewerkt, maar ik kreeg deze foutmelding omdat mijn RVM-standaardversie een oude versie was.
Zelfs wanneer u gebruikt rvm use VERSION_NUMBER -- defaultHulp niet omdat zodra u zich afmeldt van Terminal De standaardversie zal veranderen in de oude en u hebt hetzelfde probleem.

Hiervoor kunt u dit antwoord gebruiken:
Hoe de standaard Ruby-versie in te stellen met RVM?

of verwijder gewoon oude Ruby-versie met rvm uninstall X.X.Xen installeer de nieuwe met rvm install X.X.Xen maak het standaard met rvm use --default X.X.X.

Cheers.


14

Bundler 2.0.1 gebruiken Automatische versie-switching zoals vereist door het slotbestand. In dit verband werkte het installeren van Bundler 2.0.1 voor mij.

Bundler 2.0.1 installeren
gem install bundler -v 2.0.1

Update Bundler
bundle update -bundler


15

Als u een DOCKER-afbeelding gebruikt zoals FROM:ruby:2.X.XDan kunt u het volgende doen:

FROM ruby:2.6.2
... # omitted
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN gem uninstall bundler
RUN gem install bundler -v 2.1.4
RUN bundle update --bundler
RUN bundle install
... # omitted

16

Ik had vandaag hetzelfde probleem.

In mijn geval werd het probleem veroorzaakt door het gebruik van RVM Gemset anders dan de laatste die ik met Ruby 2.7.1 en Bundler 2.1.4 heb (dezelfde bundel Gemfile is vergrendeld met).

Dus gewoon Neem een ​​kijkje op uw RVM-omgeving voordat u hier een andere oplossing wordt vermeld. Speciaal als u uw project over de productie uitvoert.

Happy hacks!


17

Delete Gem History and Modules geïnstalleerd in Rails-applicatie.

$ rm -rf vendor/bundle
$ rm Gemfile.lock

en, bundel

$ bundle install --path=vendor/bundle

en, start rails server

$ bundle exec rails s

en, verbinding maken met browser.

http: // localhost: 3000 /


18

Ik heb het project verwijderd en een git-kloon van de Heroku-app gemaakt, weet niet of het een goede oplossing is, maar het werkte voor mij.

Other episodes