shrink / conductor-laravel
Laravel 对 Conductor 的运行时依赖性检查
v2.0.0
2022-05-15 17:21 UTC
Requires
- php: ^8.0.2
- illuminate/database: ^9.0
- illuminate/http: ^9.0
- illuminate/routing: ^9.0
- illuminate/support: ^9.0
- shrink/conductor: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.3
README
Conductor 检查运行时依赖的状态,Conductor: Laravel 是一套 Laravel 运行时依赖检查。
场景:我有一个容器化的 Laravel 应用程序,我想部署一个包含数据库迁移的新版本。我如何防止新版本在尚未迁移的数据库上运行?
使用方法
安装
dev:~$ composer require shrink/conductor-laravel
启用
一个可选的“开箱即用”服务提供者在 Laravel 容器中注册必要的实例(带有合理的默认配置)。
'providers' => [
// ...
+ Shrink\Conductor\Laravel\Conductor::class,
// ...
];
定义依赖
使用字符串 id
和一个 Shrink\Conductor\ChecksDependencyStatus
实例将依赖添加到集合中。例如,为了注册一个标识为 schema
的数据库模式依赖项
$checks = $app->make(CollectsApplicationDependencyChecks::class); $checks->addDependencyCheck( 'schema', $app->make(\Shrink\Conductor\Laravel\Dependencies\DatabaseSchema::class) );
支持的依赖检查
数据库模式
数据库模式检查连接的数据库是否运行着兼容版本的数据库模式。当每个迁移(在文件系统中)都已应用到数据库中时,数据库模式是兼容的。
依赖于 lcobucci/clock
实现。
use Illuminate\Database\Migrations\Migrator; use Lcobucci\Clock\Clock; use Shrink\Conductor\Laravel\Dependencies\DatabaseSchema; new DatabaseSchema( $app->make(Migrator::class, 'migrator'), (string) $app->basePath('database/migrations'), $app->make(Clock::class) );
开发
钩子
包含了一个预提交 Git 钩子,以确保在提交时符合代码要求。通过运行以下命令启用 Git 钩子:
dev:~$ git config core.hooksPath .github/hooks
许可证
Conductor: Laravel 是开源软件,使用 MIT 许可证。