forked from fixin.me/fixin.me
Add multi-database test runner (test:all_databases)
Adds `bundle exec rails test:all_databases` which runs the full test suite against every test database configured in database.yml in a single command. Convention: any top-level key starting with "test" that contains a Hash is a test database. `test:` is the required primary; `test_<name>:` blocks are optional additional adapters (e.g. test_sqlite, test_pg). For each configured database the task: 1. Checks the required adapter gem is available (skips with warning if not) 2. Runs `rails db:test:prepare` to create and migrate the database 3. Runs `rails test` and records pass/fail 4. Prints a summary and exits non-zero if any database failed Mechanism: a RAILS_DATABASE_YML env var points each subprocess to a temporary database.yml that contains only the current test config. config/application.rb(.dist) reads this var and overrides Rails' database config path before initialisation, so no monkey-patching of the test runner is required. config/database.yml.dist is updated with documented examples for SQLite and PostgreSQL additional test databases. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,10 @@ Bundler.require(*Rails.groups)
|
||||
|
||||
module FixinMe
|
||||
class Application < Rails::Application
|
||||
# Allow RAILS_DATABASE_YML to override the database config file path.
|
||||
# Used by `rails test:all_databases` to test against multiple DB adapters.
|
||||
config.paths['config/database'] = [ENV['RAILS_DATABASE_YML']] if ENV['RAILS_DATABASE_YML']
|
||||
|
||||
# Initialize configuration defaults for originally generated Rails version.
|
||||
config.load_defaults 7.0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user