私は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
と入力しました
プロジェクトを削除し、Herokuアプリからgitクローンを作成しました。良い解決策かどうかはわかりませんが、うまくいきました。
パーティーに少し遅れましたが、今日もこれに遭遇しました。このソリューションにより、Bundlerをアンインストールする必要がなくなりました。
heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2
bundlerの問題に関する議論に従って here 。
ローカルマシン(開発)でも同じ問題が発生しました。
このロックファイルではBundler 2以降を使用する必要があります。
問題はgemfile.lockにありました。ローカルバンドルバージョンとプロジェクトバンドルバージョンが一致しなかったためです!ここに解決策があります
bundle install
私も同じような経験をしました。
これが私がそれを解決した方法です
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
それで全部です。
これが役立つことを願っています。
うん、だから一般的にBundlerのバージョンをアンインストールする、gemfile.lockを削除する、そして最後にgem install bundler -v 1.15.2
(herokuが使用しているバージョン)を実行するとうまくいきました。
その後、git Push heroku master
の実行が機能しました!
この問題を解決するには、gem uninstall bundler
を実行して2.0.0.pre.1を削除し、Gemfile.lockファイルの名前を変更して(使用から削除する)、bundle install
を実行してgemfileを再インストールしました。私の場合、herokuによってインストールされた以前のバンドラーバージョンに既にアクセスできました(したがって、gem uninstall
を実行したときに、使用可能なすべてのバージョンが表示され、2.0.0.pre.1を削除することを選択しました)。
Ruby 2.6はbundlerのデフォルトバージョンに同梱されているため、システム上のbundler 2を使用しても、Ruby 2.6でアプリをデプロイするとこのエラーが発生します。
Ruby 2.6を使用している場合は、Ruby 2.6.1にアップグレードしてこの問題を回避してください。
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 として親切に報告しました。
gem install bundler:2.0.0.pre.1
bundle _2.0.0.pre.1_ install
ここで、「2.0.0.pre.1」はバンドルに必要なバージョンです。
このためにGemfile.lockを削除しないでください 理由があります 。
ローカルシステムでも同じ問題が発生しました。Rubyバージョンが低かったため、エラーが発生していました。 Rubyの更新バージョンに切り替えることで修正しました。
Ruby 2.6.3でも同じ問題が発生しましたが、回答に記載されているものは何も役に立ちません。次の解決策だけが私のために働いた:
bundle update Rails
Gemfile.lockを削除します
bundle
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
でデフォルトにします。
乾杯。