diff --git a/config/ignition.php b/config/ignition.php index 3edd721d..a77d9727 100644 --- a/config/ignition.php +++ b/config/ignition.php @@ -23,6 +23,7 @@ use Spatie\LaravelIgnition\Solutions\SolutionProviders\UnknownValidationSolutionProvider; use Spatie\LaravelIgnition\Solutions\SolutionProviders\ViewNotFoundSolutionProvider; use Spatie\LaravelIgnition\Solutions\SolutionProviders\OpenAiSolutionProvider; +use Spatie\LaravelIgnition\Solutions\SolutionProviders\SailNetworkSolutionProvider; return [ @@ -117,6 +118,7 @@ UndefinedViewVariableSolutionProvider::class, GenericLaravelExceptionSolutionProvider::class, OpenAiSolutionProvider::class, + SailNetworkSolutionProvider::class, ], /* diff --git a/src/Solutions/SolutionProviders/SailNetworkSolutionProvider.php b/src/Solutions/SolutionProviders/SailNetworkSolutionProvider.php new file mode 100644 index 00000000..0f0b2390 --- /dev/null +++ b/src/Solutions/SolutionProviders/SailNetworkSolutionProvider.php @@ -0,0 +1,30 @@ +runningInConsole() + && str_contains($throwable->getMessage(), 'php_network_getaddresses') + && file_exists(base_path('vendor/bin/sail')) + && file_exists(base_path('docker-compose.yml')) + && env('LARAVEL_SAIL') === null; + } + + public function getSolutions(Throwable $throwable): array + { + return [ + BaseSolution::create('Network address not found') + ->setSolutionDescription('Did you mean to use `sail artisan`?') + ->setDocumentationLinks([ + 'Sail: Executing Artisan Commands' => 'https://laravel.com/docs/sail#executing-artisan-commands', + ]), + ]; + } +}