Generating database migrations with Merb

I’ve been futzing with the goodness that is Merb lately. It’s nifty. Really nifty. The documentation is pretty rough though. I’ll be posting some of my discoveries here. Maybe it will help someone who, like me, was a tad lost early on.

One of the first things that confused me was migrations. Merb has script/generate just like Rails, but script/generate --help didn’t list a generator for migrations. When I attempted to generate a migration, I was promptly greeted with this pleasantness:

$ script/generate migration CreateUsers
Started merb_init.rb ...
Loading Application...
Compiling routes..
Loaded DEVELOPMENT Environment...
Couldn't find 'migration' generator

Turns out that Merb doesn’t support databases by default. The Merb-specific ActiveRecord plugin has to be installed and switched on before migrations become available.

(There are several ORM plugins to choose from as documented in the README, but I’ve had very little success getting the others to work so far.)

Generate your Merb project:

sudo gem install merb
merb my_project
cd my_project

Install the ActiveRecord plugin thusly:

sudo gem install merb_activerecord

Now open up config/dependencies.rb and uncomment the following line:

use_orm :activerecord

The first time you run script/generate after doing this, you’ll get:

Started merb_init.rb ...
No database.yml file found in my_project/config.
A sample file was created called database.sample.yml for you to copy and edit.

Copy config/database.sample.yml to config/database.yml and customize as needed. (Don’t forget to create the test and development databases.)

Now generate your first migration:

script/generate migration CreateUsers

And you’re off to the races.