Rails rake tarefas para despejar e restaurar bancos de dados PostgreSQL

Despeje / restaure facilmente seus bancos de dados PostgreSQL entre ambientes com essas tarefas rake.

Exemplo de uso de tarefa

# dump the development db
rake db
:dump

# dump the production db
RAILS_ENV
=production rake db:dump

# dump the production db & restore it to the development db
RAILS_ENV
=production rake db:dump
rake db
:restore

# note: config/database.yml is used for database configuration,
# but you will be prompted for the database user's password

Rake tarefas

# lib/tasks/db.rake
namespace :db do

desc
"Dumps the database to db/APP_NAME.dump"
task
:dump => :environment do
cmd
= nil
with_config
do |app, host, db, user|
cmd
= "pg_dump --host #{host} --username #{user} --verbose --clean --no-owner --no-acl --format=c #{db} > #{Rails.root}/db/#{app}.dump"
end
puts cmd

exec cmd
end

desc
"Restores the database dump at db/APP_NAME.dump."
task
:restore => :environment do
cmd
= nil
with_config
do |app, host, db, user|
cmd
= "pg_restore --verbose --host #{host} --username #{user} --clean --no-owner --no-acl --dbname #{db} #{Rails.root}/db/#{app}.dump"
end
Rake::Task["db:drop"].invoke
Rake::Task["db:create"].invoke
puts cmd

exec cmd
end

private

def with_config
yield Rails.application.class.parent_name.underscore,
ActiveRecord::Base.connection_config[:host],
ActiveRecord::Base.connection_config[:database],
ActiveRecord::Base.connection_config[:username]
end

end

Também disponível como uma essência.