AlsoMigrate

Migrate multiple tables with similar schema at once.

Requirements


gem install also_migrate

Configure


AlsoMigrate.configuration = [
  {
    :source => 'articles',
    :destination => 'article_archives',
    :add => [
      # Parameters to ActiveRecord::ConnectionAdapters::SchemaStatements#add_column
      [ 'deleted_at', :datetime, {} ]
    ],
    :subtract => 'restored_at',
    :ignore => 'deleted_at',
    :indexes => 'id'
  },
  {
    :source => 'users',
    :destination => [ 'banned_users', 'deleted_users' ]
  }
]

Options:

  • source Database schema source table
  • destination Database schema destination table (can also be an array of tables)
  • add Create columns that the original table doesn't have (defaults to none)
  • subtract Exclude columns from the original table (defaults to none)
  • ignore Ignore migrations that apply to certain columns (defaults to none)
  • indexes Only index certain columns (duplicates all indexes by default)

That's it!

Next time you migrate, article_archives is created if it doesn't exist.

Any new migration applied to articles is automatically applied to article_archives.