概要
HerokuのFreeプランがなくなるので、個人開発しているアプリのHeroku PostgreをHobby DevからHobby Basicに移行しました。
https://blog.heroku.com/next-chapter
ユーザーは自分だけのアプリだったので、本番環境を停止してDBを切り替えました。
やったこと
本番環境アプリを停止する。
$ heroku ps:scale web=0 --app app-prod
› Warning: heroku update available from 7.62.0 to 7.65.0.
Scaling dynos... done, now running web at 0:Free
ステージング環境のHeroku Postgreにデータを退避する。
$ heroku pg:copy app-production::DATABASE_URL DATABASE --app app-staging
› Warning: heroku update available from 7.62.0 to 7.65.0.
▸ WARNING: Destructive action
▸ This command will remove all data from DATABASE
▸ Data from DATABASE will then be transferred to DATABASE
▸ To proceed, type app-staging or re-run this command with --confirm
▸ app-staging
> app-staging
Starting copy of DATABASE to DATABASE... done
Copying... done
本番環境のHeroku Postgre (Hobby Dev)を削除する。
本番のHeroku Postgre (Hobby Basic)を作成する。
Hobby Devの時と同じ名前 DATABASE としてアタッチされるはず。
ステージング環境のHeroku Postgreからデータをコピーする。
$ heroku pg:copy app-staging::DATABASE_URL DATABASE --app app-production
› Warning: heroku update available from 7.62.0 to 7.65.0.
▸ WARNING: Destructive action
▸ This command will remove all data from DATABASE
▸ Data from DATABASE will then be transferred to DATABASE
▸ To proceed, type app-production or re-run this command with --confirm app-production
> app-production
Starting copy of DATABASE to DATABASE... done
Copying... done
本番環境のアプリを起動する。
$ heroku ps:scale web=1 --app app-production
› Warning: heroku update available from 7.62.0 to 7.65.0.
Scaling dynos... done, now running web at 1:Free