This repository was archived by the owner on Jun 2, 2021. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ spec/examples.txt
1212ci-artifacts-dir
1313ci-working-dir
1414coverage
15+ db /schema.rb
1516doc
1617* .rbc
1718* .swp
Original file line number Diff line number Diff line change @@ -207,6 +207,29 @@ namespace :db do
207207 number_to_rollback = ( args [ :number_to_rollback ] || 1 ) . to_i
208208 for_each_database { rollback ( number_to_rollback ) }
209209 end
210+
211+ desc 'Dump schema to file'
212+ task :dump_schema do
213+ require_relative '../../spec/support/bootstrap/db_config'
214+ require_relative '../../spec/support/bootstrap/table_recreator'
215+
216+ db = DbConfig . new . connection
217+
218+ puts 'Recreating tables...'
219+ TableRecreator . new ( db ) . recreate_tables ( without_fake_tables : true )
220+
221+ db . extension ( :schema_dumper )
222+ puts 'Dumping schema...'
223+ schema = db . dump_schema_migration ( indexes : true , foreign_keys : true )
224+
225+ File . open ( 'db/schema.rb' , 'w' ) { |f |
226+ f . write ( "# rubocop:disable all\n " )
227+ f . write ( schema )
228+ f . write ( "# rubocop:enable all\n " )
229+ }
230+
231+ puts 'Wrote db/schema.rb'
232+ end
210233 end
211234
212235 namespace :parallel do
Original file line number Diff line number Diff line change 1- require 'support/bootstrap/ fake_model_tables'
1+ require_relative ' fake_model_tables'
22
33class TableRecreator
44 SAFE_VIEWS = [ :pg_stat_statements ] . freeze
@@ -7,7 +7,7 @@ def initialize(db)
77 @db = db
88 end
99
10- def recreate_tables
10+ def recreate_tables ( without_fake_tables : false )
1111 prepare_database
1212
1313 ( db . views - SAFE_VIEWS ) . each do |view |
@@ -20,8 +20,10 @@ def recreate_tables
2020
2121 DBMigrator . new ( db ) . apply_migrations
2222
23- fake_model_tables = FakeModelTables . new ( db )
24- fake_model_tables . create_tables
23+ unless without_fake_tables
24+ fake_model_tables = FakeModelTables . new ( db )
25+ fake_model_tables . create_tables
26+ end
2527 end
2628
2729 private
You can’t perform that action at this time.
0 commit comments