class SequelRails::Storage::Postgres
Public Instance Methods
_create()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 4 def _create with_pgpassword do commands = ['createdb'] add_connection_settings commands add_option commands, '--maintenance-db', maintenance_db add_option commands, '--encoding', encoding add_option commands, '--locale', locale add_option commands, '--lc-collate', collation add_option commands, '--lc-ctype', ctype add_option commands, '--template', template add_option commands, '--tablespace', tablespace add_option commands, '--owner', owner commands << database safe_exec commands end end
_drop()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 21 def _drop with_pgpassword do commands = ['dropdb'] add_connection_settings commands add_flag commands, '--if-exists' commands << database safe_exec commands end end
_dump(filename)
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 31 def _dump(filename) with_pgpassword do commands = ['pg_dump'] add_connection_settings commands add_flag commands, '-s' add_flag commands, '-x' add_flag commands, '-O' add_option commands, '--file', filename commands << database safe_exec commands end end
_load(filename)
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 44 def _load(filename) with_pgpassword do commands = ['psql'] add_connection_settings commands add_option commands, '--file', filename commands << database safe_exec commands end end
close_connections()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 54 def close_connections db = ::Sequel.connect(config) # Will only work on Postgres > 8.4 pid_column = db.server_version < 90_200 ? 'procpid' : 'pid' db.execute <<-SQL.gsub(/^\s{12}/, '') SELECT COUNT(pg_terminate_backend(#{pid_column})) FROM pg_stat_activity WHERE datname = '#{database}'; SQL rescue Sequel::DatabaseDisconnectError # Will raise an error as it kills existing process running this # command. Seems to be only way to ensure *all* test connections # are closed nil rescue Sequel::DatabaseConnectionError # Will raise an error if the database doesn't exist. nil end
ctype()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 85 def ctype @ctype ||= config['ctype'] || '' end
encoding()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 73 def encoding @encoding ||= config['encoding'] || charset end
locale()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 77 def locale @locale ||= config['locale'] || '' end
maintenance_db()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 93 def maintenance_db @maintenance_db ||= config['maintenance_db'] || '' end
schema_information_dump(migrator, sql_dump)
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 97 def schema_information_dump(migrator, sql_dump) schema_information_dump_with_search_path(migrator, sql_dump) end
tablespace()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 89 def tablespace @tablespace ||= config['tablespace'] || '' end
template()
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 81 def template @template ||= config['template'] || '' end
Private Instance Methods
add_connection_settings(commands)
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 110 def add_connection_settings(commands) add_option commands, '--username', username unless username.blank? add_option commands, '--host', host unless host.blank? add_option commands, '--port', port.to_s unless port.to_s.blank? || port.to_s == '0' end
with_pgpassword() { || ... }
click to toggle source
# File lib/sequel_rails/storage/postgres.rb, line 103 def with_pgpassword ENV['PGPASSWORD'] = password unless password.blank? yield ensure ENV['PGPASSWORD'] = nil unless password.blank? end