A confusing title, I know. But I recently upgraded a rather big project to use Rails 2.1. Everything went pretty smoothly, but one thing bugged me, since it’s not really documented anywhere: What happens if you migrate from the old numbered migration scheme to the new one using UTC timestamps?
The new migration system dumps every migration ever run into a new table called schema_migration
. That of course includes your old migrations, at least those that exist in db/migrate at the time you first run rake db:migrate
on a Rails 2.1 project. It will silently drop the old and trusty schema_info
table, and from then on you’re good to go to use the new naming scheme for migrations.
So migrating a project to use the new migration scheme is as simple as running rake db:migrate
once. Check that the table schema_migrations
hasn’t been created accidentally though. That will just fail inserting the existing migrations.
There, that was easy.