Heroku has a beta feature called release phase that allows you to run commands automatically when you deploy your app. The commands run in a separate process before your app is made available to users.
The most common use case for Rails developers to is automatically run database migrations on deploy.
There are other ways to auto-run migrations. In the past, I’ve done this in CI. Release phases are generally better, since they run migrations before your app is available to users. This way, you avoid serving your new release while migrations are still running.
This is awesome for handling failed migrations. If a migration fails, the new release is aborted without impacting users. Because Rails migrations operate within a transaction, your database will be just as it was before the failure.
A (very) quick walkthrough
Just about every app on Heroku has a Procfile at its root. Here’s what a typical Procfile with release phase looks like:
web: bundle exec puma -C config/puma.rb
release: bundle exec rake db:migrate
That’s. It. Migrations will run automatically each time you deploy, before the new release is available to users. This is Heroku at its seamless best.
So, if you have a Rails app on Heroku, check out release phase!
Hired.com brings Rails job offers to you. Free for candidates. Salaries from $75,000 to $250,000. Sign up now!