jalameta/jps-patcher

此包已被废弃,不再维护。作者建议使用 dentro/laravel-patcher 包。

Laravel 补丁脚本。

v2.0.0 2020-09-10 07:45 UTC

This package is auto-updated.

Last update: 2022-08-02 14:06:25 UTC


README

一个用于燃烧生产更新(迁移类似)的补丁工具。

Total Downloads GitHub Workflow Status

已测试于

  • Laravel: 6.* | 7.* | 8.*
背景

我们的团队在项目中犯了一个愚蠢的错误,影响了数据库。这种情况已经发生多次,我们通常去修改或直接编辑数据库来修复这些问题。问题是我们需要记录这些更改,所以我们创建了此包。此外,我们有时需要为我们的应用程序批量插入用户,所以 补丁 将是最好的解决方案。

安装

执行以下方法中的任意一种。

  • 通过 shell
composer require jalameta/jps-patcher
  • "jalameta/jps-patcher": "^2.0" 添加到 composer.json
{
  "require": {
    "jalameta/jps-patcher": "^2.0"
  }
}

安装后

此过程是可选的,您可以选择跳过。

  1. 应用到您的项目中。

    • Laravel >= 5.8

      • 自动加载 :)
    • Laravel <= 5.8

      • \Jalameta\Patcher\PatcherServiceProvider 添加到 config/app.php 中的 providers 数组。
  2. 创建 patches 表。

     php artisan patcher:install

用法

创建新补丁

要创建新补丁,只需运行以下命令

php artisan make:patch what_do_you_want_to_patch

等等,这让你感觉熟悉吗?我们也是。事实是,这个包扩展了 Laravel 迁移。

运行这些命令后,您将在 patches 文件夹中看到新文件。这些文件将类似于

<?php

use Jalameta\Patcher\Patch;

class WhatDoYouWantToPatch extends Patch
{
    /**
     * Run patch script.
     *
     * @return void
     * @throws \Exception
     */
    public function patch()
    {
        // 
    }
}

这些文件中的 patch 方法将填充您的逻辑。在 Jalameta\Patcher\Patch 中,有一些有用的属性可以帮助您支持补丁,例如

  1. $container: \Illuminate\Container\Container

  2. $command: \Illuminate\Console\Command

    我们经常使用 $command 属性来打印我们正在执行的过程。例如

    $this->command->warn('i patch something danger!');
    $this->command->confirm('do you wish to continue?');

    您可以在 这里 了解更多关于 \Illuminate\Console\Command 的信息。

  3. $logger: \Illuminate\Log\Logger

    $logger 将日志存储在 storage/logs/patches.log 中。如果您想更改它,请在您的 config/logging.php 中的 channels 部分添加以下行。

    [
        'channels' => [
            'patcher' => [
                 'driver' => 'patcher', // you can change me if you want
                 'path' => storage_path('logs/patches.log'), // change me
             ],
        ],
    ];

    您可以在 这里 了解更多关于 \Illuminate\Log\Logger 的信息。

显示补丁状态

php artisan patcher:status

示例

my_project on  master [$!] via ⬢ v14.14.0 via 🐘 v7.4.11 on 🐳 v19.03.13 
➜ php artisan patcher:status
+------+---------------------------------------+-------+
| Ran? | Patch                                 | Batch |
+------+---------------------------------------+-------+
| Yes  | 2020_09_29_190531_fix_double_sections | 1     |
| Yes  | 2020_10_09_124616_add_attachment_beep | 1     |
+------+---------------------------------------+-------+

运行补丁(补丁集)

php artisan patcher:run

示例

my_project on  master [$!] via ⬢ v14.14.0 via 🐘 v7.4.11 on 🐳 v19.03.13 
➜ php artisan patcher:status
Patches table created successfully.
Patching: 2020_09_29_190531_fix_double_sections
Patched:  2020_09_29_190531_fix_double_sections (0.03 seconds)
Patching: 2020_10_09_124616_add_attachment_beep
Patched:  2020_10_09_124616_add_attachment_beep (0.06 seconds)