class Seedster::DataDumper

Attributes

dump_database[R]
dump_host[R]
dump_password[R]
dump_username[R]
file_manager[R]

Public Class Methods

new(dump_password:, dump_host:, dump_username:, dump_database:) click to toggle source
# File lib/seedster/data_dumper.rb, line 21
def initialize(dump_password:, dump_host:, dump_username:, dump_database:)
  print_greeting
  @dump_password  = dump_password
  @dump_host      = dump_host
  @dump_username  = dump_username
  @dump_database  = dump_database
  @file_manager = FileManager.new(app_root: Rails.root)
  @file_manager.create_dump_dir
  @file_manager.create_seed_file_dir
end

Public Instance Methods

dump!() click to toggle source
# File lib/seedster/data_dumper.rb, line 32
def dump!
  dump_tables
  create_consolidated_dump_file
end

Private Instance Methods

create_consolidated_dump_file() click to toggle source
# File lib/seedster/data_dumper.rb, line 54
def create_consolidated_dump_file
  dump_file = file_manager.consolidated_dump_file_name
  puts "Creating dump file: '#{dump_file}' from '#{file_manager.seed_file_dir}'"
  tar_command = "tar -zcvf #{dump_file} -C #{file_manager.seed_file_dir} ." # use relative paths
  puts "Running tar command: '#{tar_command}'"
  system(tar_command)
end
dump_tables() click to toggle source

Configuration parameters passed in via a hash here should be substituted into the query Within the query, indicate a parameter to be replaced by using syntax like:

%{user_id}

# File lib/seedster/data_dumper.rb, line 44
def dump_tables
  Seedster.configuration.tables.each do |item|
    full_query = item[:query] % Seedster.configuration.query_params
    sql_results_to_file(
      sql: full_query,
      table_name: item[:name]
    )
  end
end
print_greeting() click to toggle source
sql_results_to_file(sql:, table_name:) click to toggle source
# File lib/seedster/data_dumper.rb, line 62
def sql_results_to_file(sql:, table_name:)
  filename = file_manager.get_filename(table_name: table_name)
  puts "Dumping table '#{table_name}' to file '#{filename}' with query --#{sql}--"
  psql_cmd = %{PGPASSWORD=#{dump_password} psql -h #{dump_host} -d #{dump_database} -U #{dump_username} -c "\\copy (#{sql}) TO '#{filename}' WITH CSV"}
  system(psql_cmd)
end