Migrácie len na publikovanie
Balík, ktorý publikuje migrácie s časovou pečiatkou, ich nesmie zároveň automaticky načítavať — inak sa spustia obe kópie a migrácia zlyhá na duplicitnej tabuľke. Táto chyba zasiahla tri naše balíky. Dve expectations určené len pre balíky pripínajú toto pravidlo k service providerovi:
expect($providerClass)->toNotAutoLoadMigrations(?string $migrationsDir = null);
expect($providerClass)->toPublishMigrationsTimestamped(string $tag, int $count);it('publishes its migrations instead of auto-loading them', function (): void {
expect(PasskeysServiceProvider::class)->toNotAutoLoadMigrations();
expect(PasskeysServiceProvider::class)->toPublishMigrationsTimestamped('passkeys-migrations', 3);
});- toNotAutoLoadMigrations — adresár migrácií balíka (reflexiou odvodený z providera alebo zadaný explicitne) nesmie byť zaregistrovaný v migrátore.
- toPublishMigrationsTimestamped — tag musí publikovať presne $count zdrojov, každý do cieľa database_path('migrations/<Y_m_d_His>_<name>.php').
Obe dávajú zmysel len nad service providerom balíka, preto sú určené len pre balíky — aplikácia nemá provider, na ktorý by ich nasmerovala. Provider musí byť v aplikácii testu zaregistrovaný cez packageProviders(): toNotAutoLoadMigrations zlyhá na provideri, ktorý nikdy nenabootoval — nemohol nič zaregistrovať a prešiel by zadarmo. Statické zrkadlá: Assert::doesNotAutoLoadMigrations() a Assert::publishesMigrationsTimestamped().
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.