This is a simplified, but fairly thorough, set of scripts and configuration to enable Heroku Release Phase for Rails apps.
Further, this particular set up plays nicely with Heroku Review Apps in that the release phase script will:
- Fail, loudly, if the DB does not yet exist.
- Load the DB schema if the current schema version (as determined by bin/rails db:version) is0.
- Run DB migrations otherwise.
For a "normal" app that usually means it will run the DB migrations.
For a Review App, on the first deploy the release phase will bin/rails db:schema:load.
And then the postdeploy script will seed data.
During subsequent deploys to the Review App, the release phase will bin/rails db:migrate.
@stevenharman I really like this approach and currently using in an application of mine. One thing I'm wondering is why there is no need to run
heroku restartafter the db:migration has occured. Is the release phase somehow handling this for us?Ref: https://devcenter.heroku.com/articles/rake