eitro22
@eitro22 (toi yosito)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

git push heroku master のエラー

MacBook-Pro art % git push heroku master
Enumerating objects: 8325, done.
Counting objects: 100% (8325/8325), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6818/6818), done.
Writing objects: 100% (8325/8325), 40.27 MiB | 5.17 MiB/s, done.
Total 8325 (delta 1149), reused 8104 (delta 1015)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-18 stack
remote: -----> Determining which buildpack to use for this app
remote: ! Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
remote: Detected buildpacks: Ruby,Node.js
remote: See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order
remote: -----> Ruby app detected
remote: -----> Installing bundler 2.2.11
remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.6.6
remote: -----> Installing dependencies using bundler 2.2.11
remote: Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
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
remote: !
remote: ! ## Warning - The same version of this code has already been built: 7c0beb0381753dff088f9ccb20855d5da9e5bdbd
remote: !
remote: ! We have detected that you have triggered a build from source code with version 7c0beb0381753dff088f9ccb20855d5da9e5bdbd
remote: ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote: !
remote: ! If you are developing on a branch and deploying via git you must run:
remote: !
remote: ! git push heroku :main
remote: !
remote: ! This article goes into details on the behavior:
remote: ! https://devcenter.heroku.com/articles/duplicate-build-version
remote:
remote: Verifying deploy...
remote:
remote: ! Push rejected to neirart.
remote:
To https://git.heroku.com/neirart.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/neirart.git'

上記エラー文の
bundle lock --add-platform x86_64-linuxと
git push heroku :mainのエラーメッセージを実行してもなりません。

わかる方がいたら宜しくお願いします。

0

1Answer

以下のコマンドを実行すると

bundle lock --add-platform x86_64-linux

ファイルが更新されると思います(多分 Gemfile.lock が更新されていると思います)

それをコミットしてから、プッシュしてください。

0Like

Comments

  1. @eitro22

    Questioner

    bundle lock --add-platform x86_64-linuxを実行して
    行うと

    Installing dependencies using bundler 2.2.11
    remote: Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
    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.

    再度、このエラーメッセージがでます。
  2. エラーメッセージだけ見ると、修正されたファイルが上がっていないようです。

    エラーメッセージ内の以下の内容は

    Your bundle only supports platforms ["x86_64-darwin-20"]

    定義ファイルで「macの環境しかサポートしない」と書いてあるという意味です。

    but your local platform is x86_64-linux.

    しかし、 heroku サーバは linux だと言っています。

    そのために、上記エラーが出ています。

    ファイルが修正されて、ちゃんとコミットしているか確認してもらえますか。

    Gemfile.lock の中に x86_64-linux が書かれていますか?

    そのファイルを、ステージング(git add)して、コミット(git commit)していますか?
  3. @eitro22

    Questioner

    無事にできました!

    ###### WARNING:
    remote:
    remote: Removing `vendor/bundle`.
    remote: Checking in `vendor/bundle` is not supported. Please remove this directory
    remote: and add it to your .gitignore. To vendor your gems with Bundler, use
    remote: `bundle pack` instead.
    remote:
    remote: ###### WARNING:
    remote:
    remote: There is a more recent Ruby version available for you to use:
    remote:
    remote: 2.6.7
    remote:
    remote: The latest version will include security and bug fixes. We always recommend
    remote: running the latest version of your minor release.
    remote:
    remote: Please upgrade your Ruby version.
    remote:
    remote: For all available Ruby versions see:
    remote: https://devcenter.heroku.com/articles/ruby-support#supported-runtimes
    remote:
    remote: ###### WARNING:
    remote:
    remote: No Procfile detected, using the default web server.
    remote: We recommend explicitly declaring how to boot your server process via a Procfile.
    remote: https://devcenter.heroku.com/articles/ruby-default-web-server

    これは、気にしなくても大丈夫なやつですか?
  4. 機械翻訳でも結構わかると思うので、読んでみるとよいと思います。

    最初のワーニングは、余計なファイルが含まれているので .gitignore に入れた方が良いよ、と言っています。プッシュする際に無駄な通信が発生して時間もかかるので、やっておいた方が良いですが、それ以外の害はないと思います。

    2つ目のワーニングは、使っている ruby より新しいバージョンが使えるので、できるだけ最新版を使ってね、と言っています(セキュリティやバグ対策がされていることがあるので)。大きくバージョンを上げると、仕様が変わったりすることがあるので難しいかもしれませんが、最後の数字は最新にしてもいいかもしれませんね。

    3つ目はサーバの Procfile でWebサーバを指定していないので、デフォルトの Web サーバを使っているけど、明示的に指定したほうがいいよ、と言っています。(デフォルト Web サーバだとアプリケーションの種類によっては性能が悪いことがあるので、考えて明示的に指定しろ、ということだと思います)

    とりあえずは3つとも問題ないと思います(が、対応したほうが良いだろうとは思います)

Your answer might help someone💌