Rake Task: DB Recreate

I have this little Rake task which I seem to end up putting into all
of my projects and I'm wondering if this might be of use to other
people as well or if there is a better way of accomplishing this.

It is especially useful during initial development when you may hose
your migrations and need to go back to fresh db where rake db:migrate
VERSION=0 will not work (because of a failure during an up migration
leaving your database in an inconsistent state).

Anyhow, here's the task. I put it in lib/tasks/database.rake and then
type rake db:recreate

namespace :db do
  desc "Drop and create the current database"
  task :recreate => :environment do
    abcs = ActiveRecord::Base.configurations
    ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
    ActiveRecord::Base.connection.recreate_database(ActiveRecord::Base.connection.current_database)
  end
end

Sincerely,
Anthony Eden

Anthony Eden wrote:

Anyhow, here's the task. I put it in lib/tasks/database.rake and then
type rake db:recreate

This is similar to http://errtheblog.com/post/3 I saw a while back but they were able to work out the database-specific aspects and had a check to ensure that you were not hosing your production database.

Eric