Wrona's migration approach: make every change small, testable, reversible and independently deployable. Concretely: first make the application run on Postgres while being SQLite-compatible (replace unsupported types via custom Active Record types, adopt Solid Stack gems that use their own SQLite files, drop Postgres-specific check constraints), test each step on staging, and only swap the database adapter once the schema and queries are compatible. Then run the data migration via an open-source bash script, run the test suite, and fix remaining issues. Each step can be reverted while still on Postgres if anything goes wrong.