nedwors/hopper

Hopper 允许您轻松地在本地 Laravel 数据库之间切换,同时保留数据和简化开发

0.2.0 2021-03-07 13:32 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:27 UTC


README

Hopper

Tests

在本地 Laravel 开发时,轻松地在数据库之间切换。

想象一下:一位同事让你检查他们的 PR。但你正在开发新功能,你的本地数据库“刚刚好”。你已经用正确的模型和正确的数据调整好了,丢失它将是一件太过麻烦的事情...

现在想象一下:一位同事让你检查他们的 PR。你跳到他们的分支,设置你的数据库 - 迁移它,播种它,清除它, whatever - 然后审查他们的工作。然后,你回到你的功能,从你离开的地方继续 - 你的数据库仍然完好无损

欢迎来到 Hopper。它很简单

php artisan hop awesome_new_feature

现在,你正在一个名为 awesome_new_feature 的数据库上。

使用 Git,这甚至更简单

php artisan hop

现在,你正在当前分支的数据库上!

你可以随时使用以下命令返回默认数据库

php artisan hop --d

现在,你正在使用 Laravel 设置的默认数据库上。

安装

您可以通过 composer 安装此软件包

composer require nedwors/hopper --dev

设置

Hopper 随附一个配置文件,您可以将它发布到 config/hopper.php

php artisan hop:publish

您不需要发布配置文件即可使用 Hopper,但这是推荐的。但请不要有压力。真诚地说...请参阅配置以了解您是否想为您的项目使用它。

用法

命令

配置

命令

hop

这是使用 Hopper 时的核心命令。它有三种使用方式

  • 使用当前 Git 分支的数据库
  • 使用特定的数据库
  • 使用默认数据库

使用当前 Git 分支的数据库

这个选项是 Hopper 发挥作用的真正亮点。只需检出分支,然后切换,你就在新的数据库上了。检出之前的分支,然后切换,你就回到了起点。

要这样使用 Hopper,只需不带参数执行 hop 即可

git checkout -b updates

php artisan hop

现在,当你使用应用程序时,它将连接到 updates 数据库。

您的默认 Git 分支别名指向您的默认数据库。所以,想象一下 main 是您的默认分支。当你运行这个

git checkout main

php artisan hop

你不会移动到名为 main 的数据库。相反,你会移动到您的默认数据库 - 简单!

但不用担心,您不必强制使用当前的 Git 分支。您也可以在任何时候指定一个名称,或手动使用默认分支。

使用特定的数据库

要使用特定的数据库,只需传递要使用的数据库的名称

php artisan hop foobar

现在,当你使用应用程序时,它将连接到 foobar 数据库。

使用默认数据库

要使用默认数据库,向命令传递 --d 选项

php artisan hop --d

现在,您的应用程序将简单地使用 Laravel 中设置的默认数据库。

当使用默认数据库时,Hopper 会退居幕后;它不会触及您的数据库连接。这对于可能不想自己使用 Hopper 的团队成员来说很有用。他们可以放心,Hopper 不会干扰他们的设置。

创建后

首次使用数据库时,Hopper 将创建一个可用的数据库。很可能会想要迁移和设置此数据库。Hopper 提供了一种干净的方式来运行创建后步骤 - 查看如何设置这些步骤

hop:current

查看您当前使用的数据库

php artisan hop test

php artisan hop:current

// Currently using test

hop:delete

删除指定的数据库

php artisan hop:delete test

// Deleted test

删除数据库后,您将返回到默认数据库。

配置

设置中所述,您不需要发布 Hopper 配置文件即可使用 Hopper。配置文件如下

'default-branch' => env('HOPPER_DEFAULT_BRANCH', 'main'),

'connections' => [
    'sqlite' => [
        'driver' => Sqlite::class,
        'database-path' => 'hopper/'
    ],
    'mysql' => [
        'driver' => MySql::class,
        'database-prefix' => 'hopper_'
    ],
],

'boot-checks' => [
    Environment::class
],

'post-creation-steps' => [
    'migrate:fresh'
]

我们鼓励您查看以下描述的所有选项,以确定是否需要发布它。

默认 Git 分支

您应该在此处定义项目中默认的 Git 分支的名称

...

'default-branch' => env('HOPPER_DEFAULT_BRANCH', 'main')

...

现在,每次您在没有参数的情况下 跳转到 此分支时,将自动使用默认数据库 - 而不是名为 main 的数据库。

您还会看到有 HOPPER_DEFAULT_BRANCH .env 变量可用 - 这意味着您可以在不发布配置文件的情况下更改此值。

连接

目前,Hopper 具有内置的 sqlitemysql 数据库连接支持。Hopper 将自动使用您正在使用的任何连接。

这些和未来的驱动程序都在配置文件中公开和配置 - 这意味着即使 Hopper 最初不支持它,您也可以添加自己的驱动程序!请参阅 hopper.php 中的支持连接。

...

'connections' => [

    'sqlite' => [
        'driver' => Sqlite::class,
        'database-path' => 'hopper/'
    ],

    'mysql' => [
        'driver' => MySql::class,
        'database-prefix' => 'hopper_'
    ],

]

...

SQLite

Hopper 将所有 Sqlite 数据库存储在您的应用程序数据库目录中的相对目录中。您可以在配置文件中配置目录的名称

...

'connections' => [

    'sqlite' => [
        'driver' => Sqlite::class,
        'database-path' => 'hopper/'
    ],

]

...

因此,正如您所预期的,Hopper 创建的所有临时数据库都将存储在 database/hopper/ 中。例如,运行以下命令...

php artisan hop test

...将在 database/hopper/test.sqlite 创建一个 sqlite 数据库。

如果不存在,Hopper 将创建 hopper 目录

在使用 Sqlite 连接时,传递给 Hopper 的所有数据库名称都将被清理。斜杠将被自动转换为短划线以用于 Sqlite 连接。因此,例如,hop this/database 将创建一个名为 this-database.sqlite 的数据库

在使用 sqlite 连接时,将您选择的目录添加到您的 .gitignore 中可能值得考虑!

MySQL

Hopper 在您配置的 MySql 连接上创建所有 MySql 数据库。创建的所有数据库都将应用前缀,以便您可以轻松识别所需的内容。您可以在配置文件中配置前缀

...

'connections' => [

    'sqlite' => [
        'driver' => MySql::class,
        'database-prefix' => 'hopper_'
    ],

]

...

例如,运行以下命令...

php artisan hop test

...将创建一个名为 hopper_test 的 MySql 数据库。

在使用 MySql 连接时,传递给 Hopper 的所有数据库名称都将被清理。短划线将被自动转换为下划线以用于 MySql 连接。因此,例如,hop this-database 将创建一个名为 hopper_this_database 的数据库

添加自己的

Hopper 使得添加 Laravel 支持但 Hopper 不直接支持的数据库类型的连接变得非常简单。

要添加自己的连接,创建一个实现 Connection 接口的类。您可以参考现有的连接以了解如何构建您的新实现。准备好实现它后,将其添加到连接数组中

...

'connections' => [

    ...

    'newconnection' => [
        'driver' => NewConnection::class
    ],

    ...

]

...

启动检查

Hopper 公开了它在连接数据库连接之前运行的检查。这样,您可以在需要的情况下更改现有检查并/或添加自己的检查。它们位于 hopper.php 配置文件中

...

'boot-checks' => [
    Environment::class
]

...

包含的 Environment 检查确保应用程序环境为 local。要添加自己的检查,确保您的类实现了 BootCheck 接口或公开了一个返回 booleancheck() 方法。然后,将类名放入此数组中,您就完成了。

创建后步骤

配置创建新数据库后要运行的步骤非常简单。

步骤可以在 hopper.php 配置文件中找到。

...

'post-creation-steps' => [
    'migrate:fresh --seed'
]

...

该数组中包含的所有字符串都必须引用您应用程序中的 Artisan 命令。

也可以定义闭包。

...

'post-creation-steps' => [
    'migrate:fresh',
    fn() => app(SpecificDatabaseSeeder::class)->run()
]

...

所有步骤都是按照声明顺序运行的,所以请在任何种子之前确保 migrate 您的数据库!

更新日志

有关最近更改的更多信息,请参阅 更新日志

贡献

有关详细信息,请参阅 贡献指南

安全

如果您发现任何与安全相关的问题,请发送电子邮件到 nedwors@gmail.com,而不是使用问题跟踪器。

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件

Laravel 包模板

此包是使用 Laravel 包模板 生成的。