【rails】Heroku スタックのバージョンを下げる

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

Herokuにデプロイするとエラーが起こる

前回、デプロイ画面まで進んだもののエラーが続いたため、備忘録としてエラー解消方法を残しておく


開発環境

ruby 2.7.7

Rails 6.0.6.1

MacOS sonoma14.5


エラー内容

Deploy Branchした際におきたエラー

-----> Building on the Heroku-22 stack
-----> Determining which buildpack to use for this app
 !     Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
			Detected buildpacks: Ruby,Node.js
			See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order
-----> Ruby app detected
-----> Installing bundler 2.3.25
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
       Command: 'set -o pipefail; curl -L --fail --retry 5 --retry-delay 1 --connect-timeout 3 --max-time 30 https://heroku-buildpack-ruby.s3.us-east-1.amazonaws.com/heroku-22/ruby-2.7.7.tgz -s -o - | tar zxf - ' failed on attempt 1 of 3.
       Command: 'set -o pipefail; curl -L --fail --retry 5 --retry-delay 1 --connect-timeout 3 --max-time 30 https://heroku-buildpack-ruby.s3.us-east-1.amazonaws.com/heroku-22/ruby-2.7.7.tgz -s -o - | tar zxf - ' failed on attempt 2 of 3.

 !
 !     The Ruby version you are trying to install does not exist on this stack.
 !     
 !     You are trying to install ruby-2.7.7 on heroku-22.
 !     
 !     Ruby ruby-2.7.7 is present on the following stacks:
 !     
 !     - heroku-20
 !     
 !     Heroku recommends you use the latest supported Ruby version listed here:
 !     https://devcenter.heroku.com/articles/ruby-support#supported-runtimes
 !     
 !     For more information on syntax for declaring a Ruby version see:
 !     https://devcenter.heroku.com/articles/ruby-versions
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

デフォルトのHeroku-22で非対応

chatGPTで翻訳すると

「あなたがインストールしようとしているRubyのバージョンは、このスタック(Heroku-22)上に存在しません。」とのこと

Heroku-22は最新のスタックで、公式のドキュメントを見てもruby 2.7.7はサポート対象外になっている

このエラーの解決策はふたつ

  1. rubyのバージョンをあげること
  2. スタックのバージョンを下げること

今回、デイトラの講義にそってデプロイするため、ruby 2.7.7のまま、スタックのバージョンを下げる


対応しているのはHeroku-20

エラーの中で、ruby 2.7.7はheroku-20の対象だと教えてくれている

 !     Ruby ruby-2.7.7 is present on the following stacks:
 !     
 !     - heroku-20

解決方法

スタックのバージョンを下げる

では、Heroku-22からHeroku-20へスタックのバージョンを下げいく

参考にしたのはこちらです

とても助かりました!


Heroku CLIをインストール

brew tap heroku/brew && brew install heroku

コンソールからHerokuにログイン

heroku login

# => heroku: Press any key to open up the browser to login or q to exit: (以下略)

上記のように指示があるので、q以外のキーを押す

ブラウザ画面が立ち上がるのでログインする

ログインできると、以下にメールアドレスも表示される

Logged in as

herokuと手元のgitを関連づけ

以下のコマンドに、Herokuで登録しているアプリ名を入れて実行する

heroku git:remote -a practice55app

Heroku-20に変更する

heroku stack:set heroku-20

これでスタックの変更は完了!

#DAY26