laravel / pennant

A simple, lightweight library for managing feature flags.
https://laravel.com/docs/pennant
MIT License
479 stars 49 forks source link

[1.x] Respect configuration changes #81

Closed timacdonald closed 10 months ago

timacdonald commented 10 months ago

fixes https://github.com/laravel/pennant/issues/80

Pennant's DatabaseDriver does not currently respect changes to configuration. It also holds onto a Illuminate\Database\Connection instance. This is problematic in Octane, queue worker, and testsuite scenarios.

This PR ensures that changes to configuration, such as Config::set('pennant.stores.database.connection', 'foo'), are respected. This most likely happens in testsuites when running in parallel.

It also stops the DatabaseDriver from holding on to a DB connection instance. The database manager is now injected and the connection is always resolved fresh.

This is technically a breaking change for anyone extending the DatabaseDriver as the __construct signature has changed and the injected $db type has changed. I think the likelihood of extending that is pretty slim and this is a worthwhile break to fix the bug.