module Capistrano::Alchemy::DeploySupport
Public Instance Methods
backup_database()
click to toggle source
Makes a backup of the remote database and stores it in db/ folder
# File lib/capistrano/alchemy/deploy_support.rb, line 3 def backup_database puts 'Backing up database' timestamp = Time.now.strftime('%Y-%m-%d-%H-%M') rake "RAILS_ENV=#{fetch(:rails_env, 'production')} alchemy:db:dump DUMP_FILENAME=db/dump-#{timestamp}.sql" end
db_export_cmd(server)
click to toggle source
The actual export command that sends the data
# File lib/capistrano/alchemy/deploy_support.rb, line 24 def db_export_cmd(server) raise "No server given" if !server env = "RAILS_ENV=#{fetch(:rails_env, 'production')}" import_cmd = "cd #{release_path} && #{rake_cmd} alchemy:db:import #{env}" ssh_cmd = "#{ssh_command(server)} '#{import_cmd}'" "#{database_dump_command(database_config['adapter'])} | #{ssh_cmd}" end
db_import_cmd(server)
click to toggle source
# File lib/capistrano/alchemy/deploy_support.rb, line 15 def db_import_cmd(server) raise "No server given" if !server env = "RAILS_ENV=#{fetch(:rails_env, 'production')}" dump_cmd = "cd #{release_path} && #{rake_cmd} alchemy:db:dump #{env}" sql_stream = "#{ssh_command(server)} '#{dump_cmd}'" "#{sql_stream} | #{database_import_command(database_config['adapter'])} 1>/dev/null 2>&1" end
export_database(server)
click to toggle source
Sends the database via ssh to the server
# File lib/capistrano/alchemy/deploy_support.rb, line 10 def export_database(server) puts "Exporting the database. Please wait..." system db_export_cmd(server) end
get_files(type, server)
click to toggle source
# File lib/capistrano/alchemy/deploy_support.rb, line 39 def get_files(type, server) raise "No server given" if !server FileUtils.mkdir_p "./uploads" puts "Importing #{type}. Please wait..." system "rsync --progress -rue 'ssh -p #{ssh_port(server)}' #{server.user}@#{server.hostname}:#{shared_path}/uploads/#{type} ./uploads/" end
send_files(type, server)
click to toggle source
Sends files of given type via rsync to server
# File lib/capistrano/alchemy/deploy_support.rb, line 33 def send_files(type, server) raise "No server given" if !server FileUtils.mkdir_p "./uploads/#{type}" system "rsync --progress -rue 'ssh -p #{ssh_port(server)}' uploads/#{type} #{server.user}@#{server.hostname}:#{shared_path}/uploads/" end
Private Instance Methods
rake_cmd()
click to toggle source
# File lib/capistrano/alchemy/deploy_support.rb, line 56 def rake_cmd SSHKit.config.command_map[:rake] end
ssh_command(server)
click to toggle source
# File lib/capistrano/alchemy/deploy_support.rb, line 48 def ssh_command(server) "ssh -C -p #{ssh_port(server)} #{server.user}@#{server.hostname}" end
ssh_port(server)
click to toggle source
# File lib/capistrano/alchemy/deploy_support.rb, line 52 def ssh_port(server) server.port || 22 end