Skip to content

Commit

Permalink
Added tw:db:dump_data task
Browse files Browse the repository at this point in the history
  • Loading branch information
LocoDelAssembly committed Nov 18, 2014
1 parent 76baa92 commit af1fbad
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 7 deletions.
22 changes: 22 additions & 0 deletions lib/tasks/db/dump_restore.rake
@@ -0,0 +1,22 @@
require 'rake'
require 'benchmark'
require_relative '../support/database'

namespace :tw do
namespace :db do
desc "Dump the data to a PostgreSQL custom-format dump file"

task :dump_data => :environment do
database = ActiveRecord::Base.connection.current_database
file = Time.now.utc.strftime("%Y%m%d-%H%M%S%Z") + '.dump'
result = 1

puts "Dumping data"
puts(Benchmark.measure { result = Support::Database.pg_dump_all(database, Settings.db_dumps_dir, file) })
raise "pg_dump failed with exit code #{result}" unless result == 0

# did we write a file?
raise "Failed to create dump file" unless File.exists?(File.join(Settings.db_dumps_dir, file))
end
end
end
15 changes: 8 additions & 7 deletions lib/tasks/support/database.rb
Expand Up @@ -4,25 +4,26 @@ module Database
# Dump a specific table from a database.
def self.pg_dump(database_name, table_name, data_directory, dump_filename = nil)
dump_filename ||= "/#{table_name}.dump"
a = `pg_dump -Fc -t #{table_name} -a #{database_name} -f #{data_directory}#{dump_filename}`
a
`pg_dump -Fc -t #{table_name} -a #{database_name} -f #{File.join(data_directory, dump_filename)}`
$?.to_i
end

# For example:
# pg_restore -Fc -d taxonworks_development -t geographic_area_types ~/src/gaz/data/internal/dump/geographic_area_types.dump
def self.pg_restore(database_name, table_name, data_directory, dump_filename = nil)
dump_filename ||= "/#{table_name}.dump"
a = `pg_restore -Fc -d #{database_name} -t #{table_name} #{data_directory}#{dump_filename}`
a
`pg_restore -Fc -d #{database_name} -t #{table_name} #{File.join(data_directory, dump_filename)}`
$?.to_i
end

def self.pg_dump_all(database_name, data_directory, dump_filename)
a = `pg_dump -Fc -a #{database_name} -f #{data_directory}#{dump_filename}`
a
`pg_dump -Fc -a #{database_name} -f #{File.join(data_directory, dump_filename)}`
$?.to_i
end

def self.pg_restore_all(database_name, data_directory, dump_filename)
`pg_restore -Fc -d #{database_name} #{data_directory}#{dump_filename}`
`pg_restore -Fc -d #{database_name} #{File.join(data_directory, dump_filename)}`
$?.to_i
end

end
Expand Down

0 comments on commit af1fbad

Please sign in to comment.