Skip to content

Instantly share code, notes, and snippets.

@carlwolff
Forked from nicolai86/sync-mysql-mina.rb
Created February 14, 2014 08:51
Show Gist options
  • Save carlwolff/8997834 to your computer and use it in GitHub Desktop.
Save carlwolff/8997834 to your computer and use it in GitHub Desktop.
RYAML = <<-BASH
function ryaml {
ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@"
};
BASH
namespace :sync do
task :db do
isolate do
invoke :environment
queue RYAML
queue "USERNAME=$(ryaml #{deploy_to}/shared/config/database.yml #{rails_env} username)"
queue "PASSWORD=$(ryaml #{deploy_to}/shared/config/database.yml #{rails_env} password)"
queue "DATABASE=$(ryaml #{deploy_to}/shared/config/database.yml #{rails_env} database)"
queue "mysqldump $DATABASE --user=$USERNAME --password=$PASSWORD > #{deploy_to}/dump.sql"
queue "gzip -f #{deploy_to}/dump.sql"
mina_cleanup!
end
%x[scp #{user}@#{domain}:#{deploy_to}/dump.sql.gz .]
%x[gunzip -f dump.sql.gz]
%x[#{RYAML} mysql --verbose --user=$(ryaml config/database.yml development username) --password=$(ryaml config/database.yml development password) $(ryaml config/database.yml development database) < dump.sql]
%x[rm dump.sql]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment