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 bundle
opnieuw
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.4
door 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:
-
Verwijder het bestand
Gemfile.lock
-
Alsjeblieft nietmaak het opnieuw door
bundle install
uit te voeren. -
Voer uw opdracht
docker build
ofdocker-compose build
uit om uw project te bouwen.
Hiermee wordt het bestand Gemfile.lock
opnieuw 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 Dockerfile
met 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-
- Ik heb gemfile.lock verwijderd
- 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 bundler
deed 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 master
Werkte!
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 bundler
om 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 install
om 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:
-
bundle update rails
-
Gemfile.lock verwijderen
-
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 -- default
Hulp 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.X
en installeer de nieuwe met rvm install X.X.X
en 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.X
Dan 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.