shrink/conductor-laravel

Laravel 对 Conductor 的运行时依赖性检查

v2.0.0 2022-05-15 17:21 UTC

This package is auto-updated.

Last update: 2024-09-15 22:23:29 UTC


README

Packagist

Conductor 检查运行时依赖的状态,Conductor: Laravel 是一套 Laravel 运行时依赖检查。

场景:我有一个容器化的 Laravel 应用程序,我想部署一个包含数据库迁移的新版本。我如何防止新版本在尚未迁移的数据库上运行?

使用方法

  1. 安装 库使用 composer
  2. 启用 Conductor 使用可选的服务提供者
  3. 定义 您应用程序的运行时依赖

↓ 跳转到 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 许可证