Lalit (owner)

Fork Of

Revisions

gist: 89021 Download_button fork
public
Public Clone URL: git://gist.github.com/89021.git
Embed All Files: show embed
db_rollback_to_common.rake #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#
# Usage:
# rake db:rollback_to_common branch=production
# git checkout -m production
# rake db:migrate
#
namespace :db do
  desc 'Rolls back database to common migration state between current branch and another'
  task :rollback_to_common do
    FileUtils.cd(RAILS_ROOT) do
      diff = `git-diff --name-only HEAD #{ENV['branch']} db/migrate`
      first_difference = diff.split("\n").sort.first
      migration_files = Dir.glob(File.join('db', 'migrate', '*.rb')).sort
      common_version_index = migration_files.index(first_difference) - 1
      version = migration_files[common_version_index].match(/^db\/migrate\/(\d{14})/)[1]
      puts `rake db:migrate VERSION=#{version}`
    end
  end
end