設定

HEROKUのRails新スタック移行作業メモ

HEROKUでRailsアプリを新スタックに移行作業したときのメモです。次の移行作業は数年後になりそうなので忘れないようにメモしておきます。数年後に有効かどうかはわかりませんが。

ビルドに失敗してよくわからなくなったので、実際の作業はHEROKU上の設定をすべて削除して新規作成、デプロイメントしてしまいました。そのため、すべての手順を検証はしていないです。

準備

今回は特に何もしなかったのですがバックアップ等必要に応じてしたほうが良いでしょう。あとHEROKU CLIのプラグイン、Heroku Buildsを入れておくと何かと助かるかもしれません。フリーズした場合、ビルドをキャンセルしたいときに役に立つかもしれません。

移行手順

  • 旧スタックをメンテナンスモードに設定
  • 新スタックにアプリ作成
  • 新スタックにPostgresqlアドオン追加
  • DBのデータをコピー
  • 新スタックにデプロイメント
  • 旧スタックの削除

旧スタックをメンテナンスモードに設定

ダッシュボード等からアプリをメンテナンスモードに設定しておきます。作業中の不要なアクセスを避けられます。

新スタックにアプリ作成

Heroku-18に移行する場合の手順になります。

$ cd [project-directory]
$ heroku create --remote heroku-18 --stack heroku-18 [app-name]
$ heroku buildpacks:add --index 1 --remote heroku-18 heroku/jvm
$ heroku buildpacks:add --remote heroku-18 heroku/ruby

環境変数等設定が必要であればheroku config:setコマンドで設定しておく。

新スタックにPostgresqlアドオン追加

このあたりはオプションのはず。DBは同じものを使い続けられたと思いますが新しくしてもよければ新規作成する。

$ heroku addons:create heroku-postgresql

DBのデータをコピー

新規にDBを作成した場合は、データの移行をしておく。必要なければスキップ。

$ heroku addons
$ heroku pg:copy [old-db] [new-db] --app [app-name]

必要かもしれない
$ heroku pg:promote [new-db]

新スタックにデプロイメント

$ git push heroku-18 master
$ heroku run rake db:create --app [app-name] # 不要かも
$ heroku run rake db:migrate --app [app-name]

旧スタックの削除

ダッシュボード等からアプリを削除しておけば良いと思います。DBも古いものは必要に応じて削除しておきます。

参考

管理人

Recent Posts

CanvaがSerif (Affinity) を買収

私は使ったことがないのですが名前はよく聞…

3週間 ago

Serifのスプリングセール – アドオンが50%オフ

Affinity Photoなどレタッチ…

1か月 ago

音声がロボットのようになるときの対処

リモート会議などでたまに相手の音声がおか…

2か月 ago

Serifのブラックフライデー – 全品40%オフ V1ユーザは更にお得!

恒例のブラックフライデーセールが始まりま…

5か月 ago

[rust] rayonで書き直してみました

前回のコードを元にrayonを使った処理…

5か月 ago

[rust] async-stdで書き直してみました

前回のコードをasync-stdで書き直…

6か月 ago