Tool for making life easier with migrations on multiple tables. For example, you have a lot of sharded tables with names like mentions_client_XXX
, where XXX is a client id. And you want to simultaneously change all of the tables and remember the changes. That's where mass_migrator kicks in.
- Sequel
- Sequel-based adapter for your db
Create a migrations, for example:
class AddUpdatedAt < MassMigrator::Migration
def up
add_column table_name, :updated_at, DateTime
end
def down
drop_column table_name, :updated_at
end
end
Notice that your up
and down
methods have access to all the standard sequel data modification methods, as well as currently migrated table_name.
Then you need to perform a migration.
mass_migrate up -c 'mysql2://localhost/test_db' -t "mentions_client_\\d+" -m 'directory/with/migrations' --verbose
require 'mass_migrator'
db = Sequel.mysql2 "test_db"
MassMigrator.new(/mentions_client_\d+/, :db => db, :migrations => "path/to/migrations").run_pending_migrations
Schema info table (configurable, default name is mm_schema_info
) is created prior to running migrations.