To run tests: bundle exec rspec spec To test in irb: gem build nando.gemspec gem install nando-0.1.0.gem gem install --local nando-0.1.0.gem irb To create a migration: ./bin/generate -n TestMigration To migrate the database: ./bin/migrate To rollback the database: ./bin/rollback Might need to add: - erb - optparse - dotenv To fix CDB migration ALTER TYPE casper.chore_template_id ADD VALUE IF NOT EXISTS 'ppc-irs-payment'; \c toc_recon drop database new_tests_diss; create database new_tests_diss; \c new_tests_diss \c toc_recon drop database if exists test_nando_1; create database test_nando_1; \c test_nando_1 \c toc_recon drop database if exists test_nando_cdb; create database test_nando_cdb; \c test_nando_cdb \c toconline drop database if exists test_nando_tables; create database test_nando_tables; \c test_nando_tables # @db_connection.exec('BEGIN') # @db_connection.exec('COMMIT') pg_dump -t 'entity_1.customers' --schema-only test_nando_tables # Calling logger methods _warn 'TESTING' _debug 'TESTING' _error 'TESTING' _success 'TESTING' _info 'TESTING' grep -i -e "execute <<-([.\n]*)CREATE OR REPLACE FUNCTION common.document_settings_for_print" ./db/migrate/* r = ordinary table i = index v = view S = sequence m = materialized view c = composite type t = TOAST table f = foreign table Starting psql with "psql -E" let's you see the queries executed in \d for example TEMPORARY NOTES DBMATE MIGRATE findMigrationFiles => Encontra os ficheiro de migrações iterar por todas as entries no diretório de migrações se for um diretório, continue se não der match com o regex "migrationFileRegexp", continue sort do array de resultados (não sei se isto é mesmo preciso, mas eles fazem, prolly para garantir que corre tudo na ordem correta) if there are no migration files => error if db.WaitBefore (deve ser alguma variável interna para concorrência) => wait openDatabaseForMigration => open DB for migration SelectMigrations => obter migrations from schema_migrations iterar pelos files |filename| obter a version a partir do filename verificar se já existe nas migrações já corridas se sim, continue print "applying" obter o método up com "parseMigration" se for para criar transaction abrir transaction correr migração se não for correr migração correr migração consiste em executar o código a migração InsertMigration => record migration, assumo que deve ser adicionar ao schema_migrations