Class: DockerManager::Commands::DbPull

Inherits:
Base
  • Object
show all
Defined in:
lib/dockermanager/commands/db_pull.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from DockerManager::Commands::Base

Instance Method Details

#runObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/dockermanager/commands/db_pull.rb', line 4

def run
  # to avoid scope issue
  conf = config
  remote_dump_file = "#{conf.env_remote_directory}/dump.sql.gz"
  local_dump_file = "#{conf.project_root_path}/tmp/#{File.basename(remote_dump_file)}"

  on conf.env_host do
    execute("docker exec -t #{conf.env_remote_postgres_db_container} bash -c 'PGPASSWORD=$POSTGRES_PASSWORD pg_dump -h $POSTGRES_HOST -U $POSTGRES_USER $POSTGRES_DB --no-acl --no-owner' | gzip - -c --stdout > #{remote_dump_file}")
    download!(remote_dump_file, local_dump_file)
  end

  run_locally do
    execute(:rm, "-f", "#{conf.project_root_path}/tmp/dump.sql")
    execute("gunzip #{local_dump_file}")
    # condition pg_stat_activity.datname = \'#{local_database}\' removed
    execute("docker exec -i #{conf.env_local_postgres_db_container} bash -c 'psql -U $POSTGRES_USER -d $POSTGRES_DB -c \"SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid()\"'")
    execute("docker exec -i #{conf.env_local_postgres_db_container} bash -c 'dropdb -U $POSTGRES_USER $POSTGRES_DB'")
    execute("docker exec -i #{conf.env_local_postgres_db_container} bash -c 'createdb -U $POSTGRES_USER $POSTGRES_DB'")
    execute("docker exec -i #{conf.env_local_postgres_db_container} bash -c 'psql -U $POSTGRES_USER -d $POSTGRES_DB' < #{conf.project_root_path}/tmp/dump.sql")
    execute(:rm, "#{conf.project_root_path}/tmp/dump.sql")
  end
end