October 24, 2018

Laravel Telescopeを試す

ローカルでの開発時に役立つ情報を色々表示するツール
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と同じ仕様。

Mail

他の機能も使ってる既存プロジェクトに追加して試したけどしっかり記録される。特にメールは今まで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使うだろうけど別の問題が発生したので一旦外してしまった。

© kawax