Skip to content

Instantly share code, notes, and snippets.

@camelpunch
Created June 20, 2010 17:32
Show Gist options
  • Select an option

  • Save camelpunch/445965 to your computer and use it in GitHub Desktop.

Select an option

Save camelpunch/445965 to your computer and use it in GitHub Desktop.
require 'open3'
namespace :db do
desc "Import production database and rewrite hostname"
task :import_production do
remote_hostname = 'blog.andrewbruce.net'
local_hostname = 'blog.andrewbruce.local'
webapp_username = 'joebloggs'
webapp_hostname = 'my-web-app-host.name'
database_hostname = 'some.database.host.name'
database_username = 'dbuser'
database_password = 'dbpass'
database_name = 'dbname'
local_database_username = 'root'
local_database_name = 'localdbname'
# get remote dump of database
dump = `ssh #{webapp_username}@#{webapp_hostname} \
'mysqldump -h #{database_hostname} -u #{database_username} --password=#{database_password} #{database_name}'`
# replace all instances of the remote hostname with the local hostname
dump.gsub!(remote_hostname, local_hostname)
# write modified dump to local mysql database
stdin, stdout, stderr = Open3.popen3("mysql -u #{local_database_username} #{local_database_name}")
stdin.puts dump
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment