From b8beb1c66ca46c5e0cf9c8686b6d61425a54f630 Mon Sep 17 00:00:00 2001 From: cmrd Senya Date: Thu, 7 Apr 2016 20:00:10 +0300 Subject: [PATCH] Add db:remote:restore_latest task --- lib/capistrano-db-tasks/compressors/bzip2.rb | 2 +- lib/capistrano-db-tasks/database.rb | 6 ++++++ lib/capistrano-db-tasks/dbtasks.rb | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/capistrano-db-tasks/compressors/bzip2.rb b/lib/capistrano-db-tasks/compressors/bzip2.rb index dd34436..782089e 100644 --- a/lib/capistrano-db-tasks/compressors/bzip2.rb +++ b/lib/capistrano-db-tasks/compressors/bzip2.rb @@ -32,7 +32,7 @@ def decompress(from, to = nil) "-c --stdout > #{to}" end - "bunzip2 -f #{from} #{to}" + "bunzip2 -k -f #{from} #{to}" end end diff --git a/lib/capistrano-db-tasks/database.rb b/lib/capistrano-db-tasks/database.rb index f453c95..5b629ba 100644 --- a/lib/capistrano-db-tasks/database.rb +++ b/lib/capistrano-db-tasks/database.rb @@ -112,6 +112,7 @@ def initialize(cap_instance) def dump @cap.execute "cd #{@cap.current_path} && #{dump_cmd} | #{compressor.compress('-', output_file)}" + @cap.execute("ln -fs #{@cap.current_path}/#{output_file} #{@cap.current_path}/db/latest.sql.#{compressor.file_extension}") self end @@ -212,6 +213,11 @@ def backup(instance) remote_db = Database::Remote.new(instance) remote_db.dump end + + def restore_latest(instance) + remote_db = Database::Remote.new(instance) + remote_db.load("#{instance.current_path}/db/latest.sql.#{remote_db.compressor.file_extension}", true) + end end end diff --git a/lib/capistrano-db-tasks/dbtasks.rb b/lib/capistrano-db-tasks/dbtasks.rb index 9faf5cb..fc6de8e 100644 --- a/lib/capistrano-db-tasks/dbtasks.rb +++ b/lib/capistrano-db-tasks/dbtasks.rb @@ -37,6 +37,13 @@ Database.backup(self) end end + + desc 'Restores the latest database dump from the remote folder (pairs with db:remote:backup)' + task :restore_latest do + on roles(:db) do + Database.restore_latest(self) + end + end end namespace :local do