16
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Herokuにpushしようとしたら「 Failed to install gems via Bundler.」というエラーが出た

考えられる原因

調べたところ主な原因としては以下のものがあるっぽい

  • bundle install をし忘れている
  • gemのsplite3が本番環境で適用されている
  • Herokuとローカルの bundler のバージョンが異なる

対応

bundle installをし忘れていた時

単純に bundle install すればいい

$ bundle install --without production
$ git commit -a -m "Update gemfile.lock for heroku"
$ git push heroku master

splite3が本番環境で適用されている時

本番環境ではPostgresqlを用いるようにする

Gemfile

・
・
・

group :development, :test do
  gem 'sqlite3'

 ・
 ・
 ・

end

・
・
・

group :production do
  gem 'pg'

 ・
 ・
 ・

end

Herokuとローカルのbundlerのバージョンが異なる時

ローカルに同じバージョンをインストール

% gem uninstall bundler #ローカルのbundlerをアンインストール
% gem install bundler --version '2.2.11' #デプロイ先のHerokuと同じversionのbundlerをローカルにインストール

% bundler -v #bundlerのversion確認
Bundler version 2.2.4 #意図してたバージョンと違う

% gem list bundler #ローカルにインストールされているbundlerのversionリストを表示

% rm gemfile.lock #Gemfile.lockを削除
% bundle _2.1.4_ install --without production #version指定してbundle install

% git add -A
% git commit -m 'Change Bundler version 2.2.4 to 2.2.11'

% git push heroku master

それでも治らない、、、

上の原因と対処法をやってみたがエラーは治らず。。。

上記以外に原因が?

エラーメッセージちゃんと読めば書いてた。

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.

指定された通りに

$ bundle lock --add-platform x86_64-linux

を実行。

コミットも忘れずに

$ git add .
$ git commit -m 'Add platform'

すると、Herokuのプッシュに成功!

まじで長かった。。。

参考:
https://yumishin.com/heroku-push-error/#i-4
https://tex2e.github.io/blog/ruby/rails-on-heroku

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
16
Help us understand the problem. What are the problem?