Something like ActiveRecord migrations, but for general, one-off tasks