Rubyもアップデートし、これでherokuへプッシュできるかと思いきや、
今度は別のエラーが...
#発生したエラー
〜省略〜
remote: Your bundle only supports platforms ["x86_64-darwin-20"] but your local platform
remote: is x86_64-linux. Add the current platform to the lockfile with `bundle lock
remote: --add-platform x86_64-linux` and try again.
remote: Bundler Output: Your bundle only supports platforms ["x86_64-darwin-20"] but your local platform
remote: is x86_64-linux. Add the current platform to the lockfile with `bundle lock
remote: --add-platform x86_64-linux` and try again.
remote:
remote: !
remote: ! Failed to install gems via Bundler.
remote: !
remote: ! Push rejected, failed to compile Ruby app.
remote:
remote: ! Push failed
〜省略〜
うーん、よく分からないので、
Failed to install gems via Bundler.
↑でググってみた。
すると、同じような状況を解説した記事がいくつかヒットした。
この手のエラーの原因の1つに、ローカルとHerokuで、bundlerバージョンの不一致が起きているというケースがあるらしい。
エラー文をよく見ると
remote: -----> Installing bundler 2.2.16
Herokuではbundler 2.2.16をインストールしており、ローカルのbundlerのバージョンと一致していないことがわかった。
#試した方法
ローカルのbundlerのバージョンをHerokuのものと一致させた。
$ gem uninstall bundler //ローカルのbundlerをアンインストール
$ gem install bundler --version '2.2.16' //Herokuのbundlerと同じバージョンをインストール
$ bundler -v //適用されたbundlerのバージョンを確認
次に、変更前のbundlerのバージョンで作成されているGemfile.lockを削除し、新しいbundlerのバージョンで作り直す。
$ rm gemfile.lock //Gemfile.lockを削除
$ bundle _2.2.16_ install //新しいバージョンで作り直す
これでOK!
かと思いきや、Herokuへ再度プッシュするも、再度同じエラーが...。
どうやら他にも原因があるらしい...。
エラー文を読み返してみると、
〜省略〜
remote: Your bundle only supports platforms ["x86_64-darwin-20"] but your local platform
remote: is x86_64-linux. Add the current platform to the lockfile with `bundle lock
remote: --add-platform x86_64-linux` and try again.
〜省略〜
??? なんのこっちゃ。(勉強不足...)
#原因
どうやら、bundlerを実行できるプラットフォームが制限されているために起こるエラーらしい。
#詳細
bundlerのバージョンが2.2.◯〜の場合、bundlerが実行できるプラットフォームは、開発をしている環境のOSのみに制限されている。(デフォルトの段階で)
自分の場合、macOSで開発を行っているが、その他のOSではbundlerが実行できないというワケだ。
解決方法
エラー文にも記載があったように、以下のコマンドでデプロイ先のプラットフォームを追加する。
$ bundle lock --add-platform ruby
$ bundle lock --add-platform x86_64-linux
Gemfile.lockを開き、
PLATFORMS
ruby
x86_64-darwin-20
x86_64-linux
このようになっていたらOK!
再度Herokuへプッシュ...デプロイ成功!
#参考
・https://yumishin.com/heroku-push-error/
・https://www.autovice.jp/articles/150
・https://www.moncefbelyamani.com/understanding-the-gemfile-lock-file/