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
# File lib/seedster/data_dumper.rb, line 71 def print_greeting puts puts "🌱🌱🌱🌱🌱" puts "SEEDSTER DUMP" puts "🌱🌱🌱🌱🌱" puts end
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