class Backup::Database::PostgreSQL
Attributes
additional_options[RW]
Additional “pg_dump” or “pg_dumpall” options
host[RW]
Connectivity options
name[RW]
Name of the database that needs to get dumped. To dump all databases, set this to ‘:all` or leave blank. username
must be a PostgreSQL
superuser to run `pg_dumpall`.
only_tables[RW]
Tables to dump. This in only valid if ‘name` is specified. If none are given, the entire database will be dumped.
password[RW]
Credentials for the specified database
port[RW]
Connectivity options
skip_tables[RW]
Tables to skip while dumping the database. If ‘name` is set to :all (or not specified), these are ignored.
socket[RW]
Connectivity options
sudo_user[RW]
If set the pg_dump(all) command is executed as the given user
username[RW]
Credentials for the specified database
Public Class Methods
new(model, database_id = nil, &block)
click to toggle source
Calls superclass method
Backup::Database::Base::new
# File lib/backup/database/postgresql.rb, line 38 def initialize(model, database_id = nil, &block) super instance_eval(&block) if block_given? @name ||= :all end
Public Instance Methods
connectivity_options()
click to toggle source
# File lib/backup/database/postgresql.rb, line 102 def connectivity_options return "--host='#{socket}'" if socket opts = [] opts << "--host='#{host}'" if host opts << "--port='#{port}'" if port opts.join(" ") end
dump_all?()
click to toggle source
# File lib/backup/database/postgresql.rb, line 127 def dump_all? name == :all end
password_option()
click to toggle source
# File lib/backup/database/postgresql.rb, line 90 def password_option "PGPASSWORD=#{Shellwords.escape(password)} " if password end
perform!()
click to toggle source
Performs the pgdump command and outputs the dump file in the dump_path
using dump_filename
.
<trigger>/databases/PostgreSQL[-<database_id>].sql[.gz]
Calls superclass method
Backup::Database::Base#perform!
# File lib/backup/database/postgresql.rb, line 50 def perform! super pipeline = Pipeline.new dump_ext = "sql" pipeline << (dump_all? ? pgdumpall : pgdump) if model.compressor model.compressor.compress_with do |command, ext| pipeline << command dump_ext << ext end end pipeline << "#{utility(:cat)} > " \ "'#{File.join(dump_path, dump_filename)}.#{dump_ext}'" pipeline.run if pipeline.success? log!(:finished) else raise Error, "Dump Failed!\n" + pipeline.error_messages end end
pgdump()
click to toggle source
# File lib/backup/database/postgresql.rb, line 76 def pgdump password_option.to_s + sudo_option.to_s + "#{utility(:pg_dump)} #{username_option} #{connectivity_options} " \ "#{user_options} #{tables_to_dump} #{tables_to_skip} #{name}" end
pgdumpall()
click to toggle source
# File lib/backup/database/postgresql.rb, line 83 def pgdumpall password_option.to_s + sudo_option.to_s + "#{utility(:pg_dumpall)} #{username_option} " \ "#{connectivity_options} #{user_options}" end
sudo_option()
click to toggle source
# File lib/backup/database/postgresql.rb, line 94 def sudo_option "#{utility(:sudo)} -n -H -u #{sudo_user} " if sudo_user end
tables_to_dump()
click to toggle source
# File lib/backup/database/postgresql.rb, line 115 def tables_to_dump Array(only_tables).map do |table| "--table='#{table}'" end.join(" ") end
tables_to_skip()
click to toggle source
# File lib/backup/database/postgresql.rb, line 121 def tables_to_skip Array(skip_tables).map do |table| "--exclude-table='#{table}'" end.join(" ") end
user_options()
click to toggle source
# File lib/backup/database/postgresql.rb, line 111 def user_options Array(additional_options).join(" ") end
username_option()
click to toggle source
# File lib/backup/database/postgresql.rb, line 98 def username_option "--username=#{Shellwords.escape(username)}" if username end