v2.0.0
New features
Nandi now supports managing migrations for multiple databases within a single Rails application. This enables teams using database sharding, read/write splits, or multiple database engines to maintain safe migrations across all their databases.
Register multiple databases with independent configurations:
Nandi.configure do |config|
config.register_database(:primary,
migration_directory: "db/safe_migrations",
output_directory: "db/migrate",
default: true
)
config.register_database(:analytics,
migration_directory: "db/analytics_safe_migrations",
output_directory: "db/analytics_migrate"
)
config.lockfile_directory = "db"
end- Generation:
rails generate nandi:migration CreateUsers --database=analytics. If no database is specified, it generates for thedefaultdatabase. - Compilation:
rails generate nandi:compile --database=primary. If no database is specified, it compiles for all databases. - Enforcement: Automatically validates all configured databases
Each database maintains its own lockfile:
- Primary:
db/.nandilock.yml - Analytics:
db/.analytics_nandilock.yml
Migration Guide from v1.x
If you're using a single database, your existing configuration will continue to work. To use the multi-db functionality, all Nandi.configure blocks must be updated to use the register_database method instead of the setters. See the README for complete multi-database configuration options.
Breaking Changes
There are no breaking changes to the CLI or single database use cases. Internal breaking changes:
-
Nandi::CompiledMigration- Old: CompiledMigration.build(source_file_path)
- New: CompiledMigration.build(file_name:, db_name:)
-
Nandi::Lockfile- Old: Direct instantiation with Lockfile.new(file: path)
- New: Access via Lockfile.for(db_name) singleton pattern. Passing
nilor:primarywill mimic the previous behavior
What's Changed
Full Changelog: v1.0.1...v2.0.0-beta