class S3Backup::Pg::Import

Attributes

database[R]
pg_database_name[R]

Public Class Methods

new(pg_database_name) click to toggle source
# File lib/s3_backup/pg/import.rb, line 8
def initialize(pg_database_name)
  @pg_database_name = pg_database_name

  config = Rails.configuration.database_configuration
  @database = config[Rails.env]['database']
end

Public Instance Methods

now!() click to toggle source
# File lib/s3_backup/pg/import.rb, line 15
def now!
  puts 'Setup local database ...'
  setup_local_database
  puts 'Downloading pg database ...'
  S3Backup::Storage::S3.new.download!(pg_database_name, Config.s3_pg_path, pg_dump_s3_file.path)
  umcompress_file
  puts "Loading data in #{database} ..."
  load_file
  clean_env
  puts '🍺  Done!'
end

Private Instance Methods

clean_env() click to toggle source
# File lib/s3_backup/pg/import.rb, line 55
def clean_env
  pg_dump_file.unlink
  pg_dump_s3_file.unlink
end
load_file() click to toggle source
# File lib/s3_backup/pg/import.rb, line 46
def load_file
  `psql -d #{database} -f #{pg_dump_file.path} 2> /dev/null`
end
pg_dump_file() click to toggle source
# File lib/s3_backup/pg/import.rb, line 33
def pg_dump_file
  @pg_dump_file ||= Tempfile.new(pg_database_name)
end
pg_dump_s3_file() click to toggle source
# File lib/s3_backup/pg/import.rb, line 29
def pg_dump_s3_file
  @pg_dump_s3_file ||= Tempfile.new(pg_database_name + '_compressed')
end
setup_local_database() click to toggle source
# File lib/s3_backup/pg/import.rb, line 50
def setup_local_database
  Rake::Task['db:drop'].invoke
  Rake::Task['db:create'].invoke
end
umcompress_file() click to toggle source
# File lib/s3_backup/pg/import.rb, line 37
def umcompress_file
  file = File.open(pg_dump_file.path, 'w')

  Zlib::GzipReader.open(pg_dump_s3_file.path) do |gz|
    file.write gz.read
  end
  file.close
end