Capistrano Detect Migrations

This plugin to Capistrano leverages the capistrano-deploytags plugin to have Git identify Rails migrations before you deploy code to any remote systems. This is handy in an environment where you deploy often and want to release the newest code but only if it's not complicated by running migrations. You may also just want a list of migrations that will need to be run before deploying and this plugin makes that easy.

What It Does

It makes it automatic to detect pending migrations in any environment. You won't be surprised by deploying code that doesn't work until the migrations have been run. If I were to issue the command:

cap production deploy

This would compare the current changes with the most recent deployment tag for the environment (here: production) and look for any migrations that have appeared or changed in the code since the last run. You are then presented with a prompt allowing you to cancel the deployment after reviewing the list of migrations.

Usage

capistrano-detect-migrations is available on rubygems.org. You can install it from there with:

gem install capistrano-detect-migrations

If you use Bundler, be sure to add the gem to your Gemfile. In your Capistrano config/deploy.rb you should add:

require 'capistrano-detect-migrations'

This will create one task that hooks into one of the tasks installed by the capistrano-deploytags gem. You can always review tasks that have been added by running cap -T from your application directory.

Credits

This software was written by Karl Matthias with help from Gavin Heavyside and the support of MyDrive Solutions Limited.

License

This plugin is released under the BSD two clause license which is available in both the Ruby Gem and the source repository.