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