ローカルでの開発時に役立つ情報を色々表示するツール
https://github.com/laravel/telescope
環境
- Laravel 5.7
- Telescope 0.1.3
インストール
新規のLaravelプロジェクトにインストールする前提。既存プロジェクトでも同じはず。
https://github.com/kawax/telescope-demo
composer require laravel/telescope --dev
php artisan telescope:install
これで追加されるのはこんな感じ。
https://github.com/kawax/telescope-demo/commit/294e601b522901b1d82ce9fe5aab54b9eda2eb7c
php artisan migrate
データベースが必要なのでphp artisan serve
では動かしにくい。Homesteadでのみ動作確認。ローカルのみなので本番環境のデータベースへの影響はない。
後はhttp://local/telescope
で表示するだけ。
/telescope
を変更したい場合などの設定はconfig/telescope.php
ダッシュボード認証
ローカルで使うものなので基本的にはこの設定は不要。
Dumps
新規プロジェクトだと簡単なことしか試せないけど気付いたことを残す。
dd()
は使えない。dump()
のみ。何も表示されずTelescopeにのみ表示される。Laravel5.7で追加されたdump-serverと同じ仕様。
他の機能も使ってる既存プロジェクトに追加して試したけどしっかり記録される。特にメールは今までMailHogなどを使ってたけどTelescopeに集約されるのでいいかもしれない。
アップデート時
assetsが更新されてる場合はこれも。
php artisan vendor:publish --tag=telescope-assets --force
本番環境
ローカルのみなので本番環境ではインストールされないけどTelescopeServiceProviderが残ってるのでエラーになる。
use Laravel\Telescope\TelescopeApplicationServiceProvider;
class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
インストールしてないからTelescopeApplicationServiceProviderがないのに継承してる。
config/app.php
のTelescopeServiceProviderをコメントにしておく。
//App\Providers\TelescopeServiceProvider::class,
この辺りはまだ出たばかりで問題が把握されてないんだろうから上手く解決されるのを待つ。
とりあえずの解決方法
- TelescopeServiceProvider.phpは残す
- config/app.phpはコメント
https://github.com/laravel/telescope/issues/154#issuecomment-432938123
これでローカルでのみ有効。
さらにその後
1.0.0リリースで公式ドキュメントに入ってServiceProviderでの登録方法も書かれたのでこれで解決。
https://readouble.com/laravel/5.7/ja/telescope.html
public function register()
{
if ($this->app->isLocal()) {
$this->app->register(TelescopeServiceProvider::class);
}
}
本番でもインストールした上でenvで無効にする方法も用意。でもこれだとDBへの影響がありそう。
'enabled' => env('TELESCOPE_ENABLED', true),
使わないのにインストールは無駄なのでServiceProvider使うだろうけど別の問題が発生したので一旦外してしまった。