Heroku - 16からHeroku - 18スタックへのRailsアプリのアップグレード


私はクライアントにHeroku - 16からHerook - 18スタックへのRailsアプリを緊急にアップグレードするように取り組んでいます.Herokuはすでに今月末にHeroku - 16スタックの最後の生命を持っている.そして数日後、彼らは完全にサポートパッチとHeroku - 16アプリの新しいビルドをオフにします.
Heroku - 18スタックは2023年4月までサポートされています.
Heroku - 18がサポートする最小のRubyバージョンはRuby 2.4.10 ( source ).
source
ローカルでRubyのアップグレードをテストする
ターゲットRubyバージョンをインストールします
$ asdf install ruby 2.4.10
そのRubyバージョンに切り替えます.
$ asdf local ruby 2.4.10
$ ruby --version
ruby 2.4.10p364 (2020-03-31 revision 67879) [x86_64-darwin19]
古いバージョンのバンドル( pre 2 . x )をインストールします.
$ gem install bundler:1.17.3
Bandlerの特定のバージョンを使用して、新しいRubyバージョンのすべてのアプリケーションのGemをインストールします.
$ bundle _1.17.3_ install
ローカルでサーバを起動します( DBがどんな意味になっても接続してください)
$ bundle exec rails s

プレビューアプリケーションの配備
プレビューアプリケーションは、このアプリを取得し、生産環境のように実行する素晴らしい方法です.これは、さらにアプリのタイヤをキックする機会です.は、生産環境や設定の詳細やHerokuのは、このアプリは動作しないですか?もしそうならば、生産ではなくここで見つけることは最高です.
これにより、新しいHerokuスタックのプレビューアプリケーションに新しいRubyバージョンのブランチを配置することができます.
こちらはHerokuガイド です.
upgrading the stack of an appこれを行うには、アプリの分岐を作成するには、app.jsonでスタックを変更し、Herokuにプレビューアプリ(実際にレビューアプリと呼ばれる)を展開することです.このJSONファイルで指定されたスタックバージョンを使用します.
{
  "stack": "heroku-18"
}
recommended way
生産への変更の展開
私は最初にRubyのアップグレードの変更をプッシュしようとし、app.jsonスタックを直接生産に変更します.これは、古いスタックで展開されているRubyのアップグレード変更につながりました.app.jsonになされた変更にもかかわらず、Herokuはそのように既存のアプリケーションのスタックをアップグレードしません.

An existing app’s stack cannot be changed using app.json. The stack specified is only applied to newly created apps that are a Review App, a Heroku CI test run app, or an app created using a Heroku Buttons. source


幸いにも、Rubyのアップグレードの変更は、既存のスタックに対してうまく展開されます.そして、我々は完全な非難からまだ2日間であるため、アプリケーションは、既存のスタックを構築し、展開することができた.
私が最初にそれをしなければならなかった方法は、Heroku Cliを使用しているアプリケーションのためにスタックをセットすることでした.
$ heroku stack:set heroku-18 -a <app name>
Herokuは次のビルドでスタックアップグレードを適用します.それで、一旦設定されるならば、私はそれからRubyアップグレード変化を押し上げなければなりませんでした.
私が注文したので、私は空のコミットを押し上げることによってもう一つの生産展開を誘発しなければなりませんでした.
$ git commit --allow-empty -m "Upgrading to heroku-18"
空のコミットがメインブランチにあると、リモートのメインブランチに直接プッシュされます(git push origin main).これはHiokuと統合されたGithubを持っているので、mainブランチにプッシュされた変更が展開を引き起こすことになります.もしそうでなければ、HerokuのリモートへのプッシュによってHerokuウェイを展開するきっかけとなります.
あなたが私の文書を楽しむならば、 または私について考えてください.
joining my newsletterCharlota Blunarovaによる掩護写真