diff --git a/README.md b/README.md index ff27c5f6695e..ccbcfb4e4826 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,6 @@ We offer a $30 per year white-label license to remove the Invoice Ninja branding git clone --single-branch --branch v5-stable https://github.com/invoiceninja/invoiceninja.git cp .env.example .env composer i -o --no-dev -php artisan key:generate ``` Please Note: diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index a6f286c78d3b..228878b3b4e7 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -152,7 +152,7 @@ class Handler extends ExceptionHandler parent::report($exception); if (Ninja::isSelfHost() && $exception instanceof MissingAppKeyException) { - info('To setup the app run "cp .env.example .env" followed by "php artisan key:generate"'); + info('To setup the app run: cp .env.example .env'); } } diff --git a/app/Utils/SystemHealth.php b/app/Utils/SystemHealth.php index e24190fdd341..f9505c22796a 100644 --- a/app/Utils/SystemHealth.php +++ b/app/Utils/SystemHealth.php @@ -89,6 +89,7 @@ class SystemHealth 'exchange_rate_api_not_configured' => (bool)self::checkCurrencySanity(), 'api_version' => (string) config('ninja.app_version'), 'is_docker' => (bool) config('ninja.is_docker'), + 'pending_migrations' => self::checkPendingMigrations(), ]; } @@ -172,6 +173,17 @@ class SystemHealth return false; } + public static function checkPendingMigrations() + { + $run_count = DB::table('migrations')->count(); + + $directory = base_path('database/migrations'); + $iterator = new \FilesystemIterator($directory); + $total_count = iterator_count($iterator) - 1; + + return $run_count != $total_count; + } + public static function getPdfEngine() { if (config('ninja.invoiceninja_hosted_pdf_generation') || config('ninja.pdf_generator') == 'hosted_ninja') {