Sync a database with Capistrano

Here’s a quick capistrano task for synchronizing a remote database to your local development environment:

 
set :application, "appname"
set :application_path, "/home/someurl/apps"
set :user, "appuser"
set :password, "***********"
set :use_sudo, false
 
set :production_database,'mydb_production'
set :production_dbhost, 'localhost'
set :dbuser, 'dbadmin'
set :dbpass, '************'
 
desc "Synchronizes remote database to local development database"
task :sync_to_local, :roles => :web do
    sql_out = "#{environment_database}.sql"
    run "mysqldump --user #{dbuser} --password=#{dbpass} #{environment_database} > #{sql_out}"
    system "sftp #{user}@mywebserver.com:#{sql_out} /tmp/#{sql_out}"
    run "rm #{sql_out}"
    system "mysql -u #{dbuser} --password=#{dbpass} somedatabase_development < /tmp/#{sql_out}"
    system "rm /tmp/#{sql_out}"
end


Leave a Reply