🍅

Laravel11 pailコマンド/sailコマンド/tinkerコマンド

2024/12/18に公開

この記事は Laravel11にあるArtisanコマンドを全部調べる Advent Calendar 2024 18日目の記事です。

今回はpailコマンド/sailコマンド/tinkerコマンドについて調べました。

これらはlaravel/frameworkには定義しているものではなく、laravel/paillaravel/saillaravel/tinkerのLaravel拡張パッケージに定義しているコマンドです。
laravel/laravelのcomposer.jsonに書かれているパッケージだったので対象に含めています。

環境

  • PHP 8.4.1
  • laravel/laravel 11.3.3
  • laravel/framework 11.33.2
  • laravel/pail 1.2.1
  • laravel/sail 1.38.0
  • laravel/tinker 2.10.0

pail

アプリケーションログを出力する。

php artisan pail

実行するとstorage/logs配下のログファイルに出力しているアプリケーションログの内容をコマンドラインに出力します。

オプション 説明
--filter[=FILTER] ログの内容でフィルタリング
--message[=MESSAGE] メッセージでフィルタリング
--level[=LEVEL] ログレベルでフィルタリング
--auth[=AUTH] ユーザーIDでフィルタリング
--user[=USER] ユーザーIDでフィルタリング
--timeout[=TIMEOUT] タイムアウトの時間を指定
  • --filterを使うとログレベル、メッセージ、スタックトレースなどの内容でフィルタリングできます
  • --messageを使うとログのメッセージでフィルタリングできます
  • --levelを使うとログレベルでフィルタリングできます
    指定できるのは、emergency、alert、critical、error、warning、notice、info、debugです
  • --auth--userを使うとログインしているユーザーのIDでフィルタリングできます

sail:install

Laravel Sailをインストールする。

php artisan sail:install

実行すると利用するサービスを選択することができる。

選択後、アプリケーションルートにdocker-compose.ymlを作成します。
さらにSailが使えるように環境ファイル(.env)の書き換え、phpunit.xmlの書き換えを行う。

オプション 説明
--with[=WITH] インストールするサービスを指定
--devcontainer .devcontainerディレクトリを作成
--php[=PHP] PHPのバージョンを指定
  • --withを使ってインストールするサービスを指定できます(カンマ区切りで複数指定もできる)
    指定した場合は最初の選択肢は表示しないです
php artisan sail:install --with=mysql,redis
  • --devcontainerを付けることでDevContainer内で開発するための必要なディレクトリ、ファイルを作成します
  • --phpを使って開発環境のPHPのバージョンを指定できます(デフォルトは8.3)
php artisan sail:install --php=8.4

sail:add

サービスを追加する。

php artisan sail:add サービス名

実行するとsail:installコマンド同様にインストールするサービスを選択することができる。
選択後、アプリケーションルートにあるdocker-compose.ymlに追加する。

引数 説明
services サービスを指定
  • サービス名を引数で指定することもできます(カンマ区切りで複数指定もできる)
    指定した場合は最初の選択肢は表示しないです
php artisan sail:add mysql,redis

sail:publish

Dockerファイルを公開する。

php artisan sail:publish

実行するとLaravel SailのDockerファイル(docker-compose.yml)を公開します。

tinker

コマンドラインでLaravelアプリケーションの操作する。

php artisan tinker

実行するとコマンドラインでLaravelアプリケーションの操作できます。

引数 説明
include 起動時にファイルの読み込み
  • 引数に任意のPHPファイルを指定するとtinker起動時に動かすことができる
    たとえばecho.phpを用意し、引数で指定すると操作する前にecho.phpの内容が出力する
advent-calendar-2024 % cat echo.php 
<?php

echo '起動前に動かす' . PHP_EOL;

----

advent-calendar-2024 % php artisan tinker echo.php
Psy Shell v0.12.4 (PHP 8.4.1 — cli) by Justin Hileman
起動前に動かす
> 
オプション 説明
--execute[=EXECUTE] ファイルの実行
  • --executeを使ってファイルを指定するとTinkerで実行できる
advent-calendar-2024 % php artisan tinker --execute="var_dump(config('app.name'))"
string(7) "Laravel"
GitHubで編集を提案

Discussion