Glenn Gillen

DataMapper Migrations

I've been working on some merb related things of late, and I'm planning on writing a more detailed article on creating a merb application from scratch as so many of the tutorials out there kind of leave you hanging. In the interim though, I'm just going to touch on a little nugget of information that isn't very well publicised regarding DataMapper, one of the ORMs that gets used with merb.

ActiveRecord Style Migrations with DataMapper

That's right, you aren't left having to wrestle with the command line and ALTER TABLE statements just because you've left ActiveRecord behind. All the migration joy you've come to love with ruby on rails can come and live with you happily with merb and DataMapper.

First things first, you'll want to generate a new migration:

merb-gen migration my_migration

We should now have a file named 001_my_migration.rb and if we look at it, it won't be too foreign based on our ActiveRecord experiences:

migration 2, :my_migration do
  up do
  end

  down do
  end
end

To pad it out with some code that is actually useful, add in the definitions for what you want done:

migration 2, :my_migration do
  up do
    create_table(:posts) do
      column(:id, Integer, :serial => true)
      column(:title, String, :size => 255)
      column(:description, Text)
      column(:published, Boolean)
      column(:created_at, DateTime)
      column(:updated_at, DateTime)
    end
  end

  down do
    drop_table(:posts)
  end
end

Running the DataMapper Migration

And now that we've got the migration we are happy with, applying it to our underlying database is just a matter of the following:

rake dm:db:migrate

Glenn Gillen

I'm an advisor to, and investor in, early-stage tech startups. Beyond that I'm an incredibly fortunate husband and father. Working on a developer-facing tool or service? Thinking about starting one? Email me and let me know or come to one of our days to help make it a reality.