web-dev-qa-db-ja.com

このロックファイルにはBundler 2以降を使用する必要があります

私はherokuで作業しており、アプリをプッシュしようとするたびにこのメッセージが表示されます:

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: 

「リモート:!このロックファイルではBundler 2以降を使用する必要があります。

しかし、私のBundlerバージョンは2.0.0.pre.1です

どうしたらいいかわかりません。バンドルをアンインストールしてからもう一度インストールしてみました。Gemfile.lockを消去して、もう一度bundleと入力しました

20
Pedro

プロジェクトを削除し、Herokuアプリからgitクローンを作成しました。良い解決策かどうかはわかりませんが、うまくいきました。

0
Pedro

パーティーに少し遅れましたが、今日もこれに遭遇しました。このソリューションにより、Bundlerをアンインストールする必要がなくなりました。

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

bundlerの問題に関する議論に従って here

29
Alex

ローカルマシン(開発)でも同じ問題が発生しました。

このロックファイルではBundler 2以降を使用する必要があります。
問題はgemfile.lockにありました。ローカルバンドルバージョンとプロジェクトバンドルバージョンが一致しなかったためです!ここに解決策があります

  1. Gemfile.lockを削除しました
  2. コマンドを実行します-bundle install
    これで問題が解決しましたが、スムーズです!他の人のために働くことを願っています!
17
S.Yadav

私も同じような経験をしました。

これが私がそれを解決した方法です

Bundler gemのすべてのローカルgemのリストを表示します

gem list bundler

N/B:上記のコマンドはrbenvバージョンマネージャー用です。rvm用のものは異なる場合があります

これにより、ローカルにインストールされたbundler gemのバージョンが表示されます

bundler (2.0.2, default: 1.17.2)

bundlerバージョン2がローカルにインストールされていない場合は、実行します

gem install bundler

OR

gem install bundler -v 2.0.2

bundlerバージョン2が既にローカルにインストールされているか、インストールされたばかりの場合は、RubyGems Package Managerの更新をローカルにインストールするだけです。これを行うには、実行します

gem update --system

そして最後に走ります

bundler update --bundler

それで全部です。

これが役立つことを願っています。

10
Promise Preston

うん、だから一般的にBundlerのバージョンをアンインストールするgemfile.lockを削除する、そして最後にgem install bundler -v 1.15.2(herokuが使用しているバージョン)を実行するとうまくいきました。

その後、git Push heroku masterの実行が機能しました!

3
Aleksander Jess

この問題を解決するには、gem uninstall bundlerを実行して2.0.0.pre.1を削除し、Gemfile.lockファイルの名前を変更して(使用から削除する)、bundle installを実行してgemfileを再インストールしました。私の場合、herokuによってインストールされた以前のバンドラーバージョンに既にアクセスできました(したがって、gem uninstallを実行したときに、使用可能なすべてのバージョンが表示され、2.0.0.pre.1を削除することを選択しました)。

2
John Creamer

Ruby 2.6はbundlerのデフォルトバージョンに同梱されているため、システム上のbundler 2を使用しても、Ruby 2.6でアプリをデプロイするとこのエラーが発生します。

Ruby 2.6を使用している場合は、Ruby 2.6.1にアップグレードしてこの問題を回避してください。

2
Sergey

HerokuはBundler 2.0ではなく、1.15.2をtracelogのヒントとして使用します。

私の知る限り、「回避策」は、独自のビルドパックを作成するか、独自に単純なフォークを作成することです。

エディターでlib/language_pack/Ruby.rbを開き、次の行を変更します。

BUNDLER_VERSION = "1.11.2"

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

Update:Ruby 2.6.1およびBundler 2.0.1以降、HerokuはBundler 2.0.1をサポートするようになりました。 https://devcenter.heroku.com/articles/bundler-version#known-upgrade-issues

@Schneemsがコメントで述べているように、これはRuby 2.6.0の場合ではありません。これはbinstubsから誤って呼び出されるためです。彼はこれを Ruby Bug#15622 として親切に報告しました。

1
Frederik Spang

ローカルシステム用

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

ここで、「2.0.0.pre.1」はバンドルに必要なバージョンです。

このためにGemfile.lockを削除しないでください 理由があります

0
Arye Eidelman

ローカルシステムでも同じ問題が発生しました。Rubyバージョンが低かったため、エラーが発生していました。 Rubyの更新バージョンに切り替えることで修正しました。

0
Dyaniyal Wilson

Ruby 2.6.3でも同じ問題が発生しましたが、回答に記載されているものは何も役に立ちません。次の解決策だけが私のために働いた:

  1. bundle update Rails

  2. Gemfile.lockを削除します

  3. bundle

0
Timo Moss

Herokuを使用していない人:

私はすべてを試しましたが、まだこのエラーが発生していました。このリンクでさえ私を助けませんでした: https://github.com/jekyll/jekyll/issues/746

これが私の解決策でした:

GitHubにコードをプッシュします。プロジェクトフォルダーを削除して新しいフォルダーを作成し、コードバンドルを取得してインストールします。バンドラーの更新-バンドラーは最後には役に立たなかったので、使用しませんでした。

もう1つ重要なこと:Rubyバージョンを更新しましたが、RVMのデフォルトバージョンが古いバージョンだったため、このエラーが発生していました。 rvm use VERSION_NUMBER -- defaultを使用しても、ターミナルからログアウトするとすぐにデフォルトバージョンが古いバージョンに変更され、同じ問題が発生するため、役に立ちません。

このために、この答えを使用できます。 RVMでデフォルトのRubyバージョンを設定する方法?

または、rvm uninstall X.X.Xで古いRubyバージョンをアンインストールし、rvm install X.X.Xで新しいバージョンをインストールし、rvm use --default X.X.Xでデフォルトにします。

乾杯。

0
Navid Farjad