Skip to content

Instantly share code, notes, and snippets.

@tbprojects
Created March 13, 2013 09:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tbprojects/5150521 to your computer and use it in GitHub Desktop.
Save tbprojects/5150521 to your computer and use it in GitHub Desktop.
Fetching production db via capistrano
namespace :server_db do
task :migrate, :roles => :app do
run "cd #{release_path} && RAILS_ENV=production rake db:migrate"
end
task :get, :roles => :app do
puts "This task is designed to get database from the server"
puts "Example: cap ENV server_db:get"
t = Time.now
db_name = "pg_dump_#{environment}_%04d%02d%02d_%02d%02d%02d.sql" % [t.year, t.month, t.day, t.hour, t.min, t.sec]
compressed_db_name = "#{db_name}.bz2"
puts ">> Dumping and compressing database"
run "mkdir -p $HOME/database"
run "pg_dump -i -p 5433 -x -O #{user} | bzip2 > $HOME/database/#{compressed_db_name}"
puts ">> Downloading database"
puts `mkdir -p ~/backups/yougame`
puts `scp #{user}@tbprojects.pl:database/#{compressed_db_name} ~/backups/yougame/#{compressed_db_name}`
puts ">> Decompressing database"
puts `bunzip2 ~/backups/yougame/#{compressed_db_name}`
puts ">> Importing database"
`rake db:drop`
`rake db:create`
yaml_cfg = YAML.load(File.open("./config/database.yml"))["development"]
local_db_name = yaml_cfg["database"]
local_db_user = yaml_cfg["username"]
`psql #{ local_db_name } < ~/backups/yougame/#{db_name} --user #{ local_db_user }`
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment