Module: EDB::DBMS::PostgreSQL

Defined in:
lib/edb/dbms/postgresql.rb

Class Method Summary collapse

Class Method Details

.backup(dir_name) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/edb/dbms/postgresql.rb', line 29

def backup(dir_name)
  db    = ::EDB.opts[:DBMS][:PostgreSQL]
  files = {
    dump:    File.join(dir_name, "#{db[:database]}.sql"),
    cluster: File.join(dir_name, 'cluster.sql')
  }

  ::EDB::Logger.log(:info, "Dumping #{db[:database]}...")
  pg_dump = db[:binpath] && !db[:binpath].empty? ? File.join(db[:binpath], 'pg_dump') : 'pg_dump'
  Kernel.system "PGPASSWORD='#{db[:password]}' #{pg_dump} -h #{db[:host]} -p #{db[:port]} -U #{db[:username]} -F c -b -f '#{files[:dump]}' #{db[:database]}"

  ::EDB::Logger.log(:info, 'Dumping the cluster...')
  pg_dumpall = db[:binpath] && !db[:binpath].empty? ? File.join(db[:binpath], 'pg_dumpall') : 'pg_dumpall'
  Kernel.system "PGPASSWORD='#{db[:password]}' #{pg_dumpall} -h #{db[:host]} -p #{db[:port]} -U #{db[:username]} -f '#{files[:cluster]}'"

  files.values
end