Class: MultitenancyTools::SchemaDumper
- Inherits:
-
Object
- Object
- MultitenancyTools::SchemaDumper
- Defined in:
- lib/multitenancy_tools/schema_dumper.rb
Overview
SchemaDumper can be used to generate SQL dumps of the structure of a PostgreSQL schema. It requires pg_dump.
The generated dump DOES NOT contain:
-
privilege statements (GRANT/REVOKE)
-
tablespace assigments
-
ownership information
-
any table data
SchemaDumper is suitable to create SQL templates for SchemaCreator.
Instance Method Summary collapse
-
#dump_to(file, mode: 'w') ⇒ Object
Generates a dump an writes it into a file.
-
#initialize(database, schema) ⇒ SchemaDumper
constructor
A new instance of SchemaDumper.
Constructor Details
#initialize(database, schema) ⇒ SchemaDumper
Returns a new instance of SchemaDumper.
23 24 25 26 |
# File 'lib/multitenancy_tools/schema_dumper.rb', line 23 def initialize(database, schema) @database = database @schema = schema end |
Instance Method Details
#dump_to(file, mode: 'w') ⇒ Object
Generates a dump an writes it into a file. Please see IO.new for open modes.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/multitenancy_tools/schema_dumper.rb', line 35 def dump_to(file, mode: 'w') stdout, stderr, status = Open3.capture3( 'pg_dump', '--schema', @schema, '--schema-only', '--no-privileges', '--no-tablespaces', '--no-owner', '--dbname', @database ) fail(PgDumpError, stderr) unless status.success? File.open(file, mode) do |f| f.write DumpCleaner.new(stdout).clean end end |