Ray server is a beautiful, lightweight php app build on Laravel that helps you debug your app. It runs without installation on multiple platforms.

Last update: Jun 28, 2022

Ray server

A server for debugging more than just Laravel applications.

Support me on Patreon Downloads Join to iur telegram

RayServer is a beautiful, lightweight web server built on Laravel and VueJs that helps debugging your app. It runs without installation on multiple platforms.

RayServer will help you debugging your projects with the Ray debug tool from spatie. The Ray debug tool supports PHP, Ruby, JavaScript, TypeScript, NodeJS, Go and Bash applications. After installing one of the libraries to send information to Ray, you can use the ray function to quickly dump stuff. Any variable(s) that you pass to ray will be displayed. Reas more.

RayServer also is an email testing tool that makes it super easy to install and configure a local email server. RayServer sets up a fake SMTP server and you can configure your preferred web applications to use RayServer’s SMTP server to send and receive emails. For instance, you can configure a local WordPress site to use RayServer for email deliveries.

Moreover RayServer is compatible with sentry, monolog.

It is a free alternative of The Ray app for those who want to run a server without GUI, cannot afford the paid version or just like open source.

But it doesn’t mean you shouldn’t support spatie’s packages!

You can find out more information about the RayServer here.

Features

  • Compatible with spatie/ray package
  • Compatible with Sentry (See https://docs.sentry.io/platforms)
  • Compatible with Monolog via \Monolog\Handler\SlackWebhookHandler
  • Compatible with SMTP. RayServer can be used as an email testing tool.

Code samples of usage you can find here

Technological stack

  • Laravel 8
  • Inertia
  • Swoole Http/Websocket server
  • Vue
  • TailwindCSS

Ray server devices

Code samples of usage you can find [here](https://github.com/butschster/ray-server-test/tree/master/tests/Feature

Docker image

You can run Ray server via docker

Run it from Docker Hub or using the provided Dockerfile

docker run --pull always -p 23517:8000 -p 1025:1025 butschster/ray-server:latest

# or 

docker run -p 23517:8000 -p 1025:1025 butschster/ray-server:v1.11

Configuration

  1. Install spatie/ray or other Ray debug tool in your project
  2. Configure your .env for Ray package
    • RAY_HOST=127.0.0.1 - Ray server host
    • RAY_PORT=23517 - Ray server port
  3. Configure your .env for Sentry package
  4. Configure your .env for monolog logs
    • LOG_CHANNEL=slack
    • LOG_SLACK_WEBHOOK_URL=http://127.0.0.1:23517/slack
  5. Configure your .env for mail
    • MAIL_MAILER=smtp
    • MAIL_HOST=127.0.0.1
    • MAIL_PORT=1025
  6. Open http://127.0.0.1:23517 url in your browser

Enjoy!

Contributing

Server requirements

  1. PHP 8.0
  2. Swoole 4.7
  3. NodeJS

Installation

  1. Clone repository
  2. Run composer `composer install
  3. Run npm npm i
  4. Run ray server php artisan server:start --host=127.0.0.1 --port=23517
  5. Run smtp server php artisan smtp:start --host=127.0.0.1 --port=1025
  6. Build npm npm run prod

License

Ray server is open-sourced software licensed under the MIT license.

Tasks to do

  • Simple data
  • Colors
  • Sizes
  • Labels
  • New screen
  • Clear all
  • Caller
  • Trace
  • Pause
  • Counter
  • Class name of an object
  • Measure
  • Json
  • Xml
  • Carbon
  • File
  • Table
  • Image
  • Html
  • Text
  • Notifications
  • Phpinfo
  • Exception
  • Show queries
  • Count queries
  • Show events
  • Show jobs
  • Show cache
  • Model
  • Show views
  • Markdown
  • Collections
  • Env
  • Response
  • Request
  • Ban
  • Charles
  • Remove
  • Hide/Show events
  • Sticky header
  • Application log
  • Show Http client requests
  • Mailable
  • Sentry
  • Monolog
  • SMTP server
  • Show WordPress errors
  • Dark theme

GitHub

https://github.com/butschster/ray-server
Comments
  • 1. how to start without docker?

    i have this error when opening the page

    Warning: Unknown: Failed to open stream: No such file or directory in Unknown on line 0

    Fatal error: Failed opening required '/Volumes/MacData/work/buggregator/server.php' (include_path='.:/usr/local/Cellar/php/8.0.12/share/php/pear') in Unknown on line 0

    Reviewed by anditsung at 2022-04-09 01:17
  • 2. Get the UI which is shown on the homepage

    When I pull the latest version of buggregator from docker hub I get the app version which is shown in the images in the Readme but when I saw the version on the website I fell in love with that UI. I did not find a way in the readme to be able to get that version I might miss something but is there a way to get this fancy looking version?

    Screenshot 2022-03-22 at 22 15 02

    By the way; I love working with buggregator it really makes me more productive if there is a way I can fund you some coffee please let me know!

    Reviewed by dstollie at 2022-03-22 21:16
  • 3. Using vue-ray, or js-ray etc - In browser Ray is being blocked by CORS policy

    CORS allowed headers are missing.

    Still didn't dive into source code. Is this something you would accept a PR?

    Or you see this is missing, and easy fix on your end?

    image

    Reviewed by ijpatricio at 2022-02-16 10:58
  • 4. mail server seems to cache emails and is not refreshing

    hi, I have found some strange behavior.

    I am using buggregator as a smtp server, but it keeps showing the same email message over and over.

    not sure if it caches it somehow or is not refreshing or something...

    cheers, dan

    Reviewed by danielzzz at 2021-11-29 14:23
  • 5. is it possible to password protect the dashboard

    hi,

    is it possible to somehow password protect the dashboard?

    this would be useful for tracking live servers. I know I could tunnel it to my local installation, but with more developers it get's a bit complicated.

    thanks, cheers, dan

    Reviewed by danielzzz at 2021-11-25 12:48
  • 6. Use termwind to format console output

    Termwind allows you to build unique and beautiful PHP command-line applications, using the Tailwind CSS API. In short, it's like Tailwind CSS, but for the PHP command-line applications.

    See https://github.com/nunomaduro/termwind

    Reviewed by butschster at 2021-10-11 15:46
  • 7. Adds ability to enable password protection for dashboard

    By default, Buggregator doesn't use any authentication, but you can enable it via ENV variables.

    AUTH_ENABLED=true
    AUTH_USERNAME=admin  # optional
    AUTH_PASSWORD=secret # optional
    

    After server starting login and password will be shown in a terminal.

    fixes #57

    Reviewed by butschster at 2021-11-25 21:34
  • 8. Issues with SQL Database locked

    I've been playing with Buggregator recently via Docker, but keep hitting this error:

    [2022-03-10 14:24:02] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"exception":"[object] (Cycle\\Database\\Exception\\StatementException(code: 0): SQLSTATE[HY000]: General error: 5 database is locked at /app/vendor/cycle/database/src/Driver/SQLite/SQLiteDriver.php:39)

    I'm primarily using the v2.0.0-beta Docker image on an M1 Mac, both from DockerHub (using Rosetta to run the x86 image on ARM), and building it locally (ARM on ARM).

    After starting the server and sending a larger amount of data, I get the following:

    ➜  MoodleRay git:(main) ✗ docker logs ray
    SQLite database file [/app/database/database.sqlite] is created.
    Migrate 0_default_create_events
    Migrate 0_default_create_users
    Migrate 0_default_create_stored_events
    Authentication is disabled.
    [INFO] RoadRunner server started; version: 2.6.3, buildtime: 2021-12-03T11:37:00+0000
    [2022-03-10 14:26:25] production.ERROR: Cycle\Database\Driver\Driver::getPDO(): Return value must be of type PDO, null returned {"exception":"[object] (Cycle\\Database\\Exception\\StatementException(code: 0): Cycle\\Database\\Driver\\Driver::getPDO(): Return value must be of type PDO, null returned at /app/vendor/cycle/database/src/Driver/SQLite/SQLiteDriver.php:39)
    [stacktrace]
    #0 /app/vendor/cycle/database/src/Driver/Driver.php(322): Cycle\\Database\\Driver\\SQLite\\SQLiteDriver->mapException(Object(TypeError), 'BEGIN TRANSACTI...')
    #1 /app/vendor/cycle/orm/src/Transaction/Runner.php(159): Cycle\\Database\\Driver\\Driver->beginTransaction()
    #2 /app/vendor/cycle/orm/src/Transaction/Runner.php(58): Cycle\\ORM\\Transaction\\Runner->prepareTransaction(Object(Infrastructure\\CycleOrm\\Database\\Drivers\\SQLiteDriver))
    #3 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(152): Cycle\\ORM\\Transaction\\Runner->run(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #4 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(372): Cycle\\ORM\\Transaction\\UnitOfWork->runCommand(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #5 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(424): Cycle\\ORM\\Transaction\\UnitOfWork->resolveSelfWithEmbedded(Object(Cycle\\ORM\\Transaction\\Tuple), Object(Cycle\\ORM\\RelationMap), false)
    #6 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(233): Cycle\\ORM\\Transaction\\UnitOfWork->resolveRelations(Object(Cycle\\ORM\\Transaction\\Tuple))
    #7 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(99): Cycle\\ORM\\Transaction\\UnitOfWork->walkPool()
    #8 /app/vendor/cycle/orm/src/EntityManager.php(47): Cycle\\ORM\\Transaction\\UnitOfWork->run()
    #9 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(36): Cycle\\ORM\\EntityManager->run()
    #10 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(47): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->handle(Object(Modules\\Events\\Application\\Commands\\StoreEvent\\Command))
    #11 /app/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->__invoke(Object(App\\Commands\\HandleReceivedEvent))
    #12 /app/vendor/symfony/messenger/MessageBus.php(77): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle(Object(Symfony\\Component\\Messenger\\Envelope), Object(Symfony\\Component\\Messenger\\Middleware\\StackMiddleware))
    #13 /app/app/Infrastructure/Bus/Command/MessengerCommandBus.php(31): Symfony\\Component\\Messenger\\MessageBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #14 /app/app/Modules/Ray/Interfaces/Http/Controllers/StoreEventAction.php(41): Infrastructure\\Bus\\Command\\MessengerCommandBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #15 /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction->__invoke(Object(Illuminate\\Http\\Request), Object(Infrastructure\\Bus\\Command\\MessengerCommandBus), Object(Illuminate\\Cache\\Repository), Object(Modules\\Ray\\EventHandler), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
    #16 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
    #17 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction), '__invoke')
    #18 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
    #19 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
    #20 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
    #21 /app/vendor/inertiajs/inertia-laravel/src/Middleware.php(82): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #23 /app/app/Interfaces/Http/Middleware/ShareInertiaData.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #24 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #25 /app/app/Interfaces/Http/Middleware/SubstituteUuids.php(34): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #26 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\SubstituteUuids->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #27 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #28 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #29 /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #30 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #31 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #32 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #33 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #34 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
    #35 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #36 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #37 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #38 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #39 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #41 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #42 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
    #43 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
    #44 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
    #45 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
    #46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
    #47 /app/vendor/spiral/roadrunner-laravel/src/Dumper/Middleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #48 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Spiral\\RoadRunnerLaravel\\Dumper\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #49 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #50 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #51 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #54 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #56 /app/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #58 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #60 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #61 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #62 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
    #63 /app/vendor/spiral/roadrunner-laravel/src/Worker.php(113): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
    #64 /app/vendor/spiral/roadrunner-laravel/src/Console/Commands/StartCommand.php(112): Spiral\\RoadRunnerLaravel\\Worker->start(Object(Spiral\\RoadRunnerLaravel\\WorkerOptions))
    #65 /app/vendor/symfony/console/Command/Command.php(298): Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #66 /app/vendor/symfony/console/Application.php(1005): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #67 /app/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #68 /app/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #69 /app/bin/rr-worker(74): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #70 {main}
    
    [previous exception] [object] (TypeError(code: 0): Cycle\\Database\\Driver\\Driver::getPDO(): Return value must be of type PDO, null returned at /app/vendor/cycle/database/src/Driver/Driver.php:662)
    [stacktrace]
    #0 /app/vendor/cycle/database/src/Driver/Driver.php(320): Cycle\\Database\\Driver\\Driver->getPDO()
    #1 /app/vendor/cycle/orm/src/Transaction/Runner.php(159): Cycle\\Database\\Driver\\Driver->beginTransaction()
    #2 /app/vendor/cycle/orm/src/Transaction/Runner.php(58): Cycle\\ORM\\Transaction\\Runner->prepareTransaction(Object(Infrastructure\\CycleOrm\\Database\\Drivers\\SQLiteDriver))
    #3 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(152): Cycle\\ORM\\Transaction\\Runner->run(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #4 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(372): Cycle\\ORM\\Transaction\\UnitOfWork->runCommand(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #5 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(424): Cycle\\ORM\\Transaction\\UnitOfWork->resolveSelfWithEmbedded(Object(Cycle\\ORM\\Transaction\\Tuple), Object(Cycle\\ORM\\RelationMap), false)
    #6 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(233): Cycle\\ORM\\Transaction\\UnitOfWork->resolveRelations(Object(Cycle\\ORM\\Transaction\\Tuple))
    #7 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(99): Cycle\\ORM\\Transaction\\UnitOfWork->walkPool()
    #8 /app/vendor/cycle/orm/src/EntityManager.php(47): Cycle\\ORM\\Transaction\\UnitOfWork->run()
    #9 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(36): Cycle\\ORM\\EntityManager->run()
    #10 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(47): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->handle(Object(Modules\\Events\\Application\\Commands\\StoreEvent\\Command))
    #11 /app/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->__invoke(Object(App\\Commands\\HandleReceivedEvent))
    #12 /app/vendor/symfony/messenger/MessageBus.php(77): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle(Object(Symfony\\Component\\Messenger\\Envelope), Object(Symfony\\Component\\Messenger\\Middleware\\StackMiddleware))
    #13 /app/app/Infrastructure/Bus/Command/MessengerCommandBus.php(31): Symfony\\Component\\Messenger\\MessageBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #14 /app/app/Modules/Ray/Interfaces/Http/Controllers/StoreEventAction.php(41): Infrastructure\\Bus\\Command\\MessengerCommandBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #15 /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction->__invoke(Object(Illuminate\\Http\\Request), Object(Infrastructure\\Bus\\Command\\MessengerCommandBus), Object(Illuminate\\Cache\\Repository), Object(Modules\\Ray\\EventHandler), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
    #16 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
    #17 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction), '__invoke')
    #18 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
    #19 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
    #20 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
    #21 /app/vendor/inertiajs/inertia-laravel/src/Middleware.php(82): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #23 /app/app/Interfaces/Http/Middleware/ShareInertiaData.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #24 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #25 /app/app/Interfaces/Http/Middleware/SubstituteUuids.php(34): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #26 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\SubstituteUuids->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #27 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #28 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #29 /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #30 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #31 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #32 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #33 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #34 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
    #35 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #36 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #37 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #38 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #39 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #41 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #42 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
    #43 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
    #44 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
    #45 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
    #46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
    #47 /app/vendor/spiral/roadrunner-laravel/src/Dumper/Middleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #48 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Spiral\\RoadRunnerLaravel\\Dumper\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #49 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #50 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #51 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #54 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #56 /app/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #58 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #60 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #61 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #62 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
    #63 /app/vendor/spiral/roadrunner-laravel/src/Worker.php(113): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
    #64 /app/vendor/spiral/roadrunner-laravel/src/Console/Commands/StartCommand.php(112): Spiral\\RoadRunnerLaravel\\Worker->start(Object(Spiral\\RoadRunnerLaravel\\WorkerOptions))
    #65 /app/vendor/symfony/console/Command/Command.php(298): Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #66 /app/vendor/symfony/console/Application.php(1005): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #67 /app/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #68 /app/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #69 /app/bin/rr-worker(74): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #70 {main}
    "}
    +---------+------------------------------------------------------+
    |  date   |  Thu, 10 Mar 2022 14:26:28 +0000                     |
    |  source |  setup.php on line 441                               |
    |  file   |  /Users/nicols/Sites/moodles/sm/moodle/lib/setup.php |
    +---------+------------------------------------------------------+
     RAY  Log
    
      1▕ array:4 [
      2▕   "identifer" => "asdf"
      3▕   "component" => "core"
      4▕   "a" => null
      5▕   "lang" => "en"
      6▕ ]
    
    
    Reviewed by andrewnicols at 2022-03-10 14:27
  • 9. Labels for screens

    Hi

    Is it possible to have the screen label in the selector itself, instead just the blue circle? If many screens are opened it is hard to know which one is which.

    Also, is it possible not to automatically change the active screen when a message is received. If I am currently reviewing a message and new one is received in another screen, I am automatically moved to the new screen. Instead of automatically change the active screen, maybe just highlight the screen button on the screen selector on the top.

    Thanks galiganu

    Reviewed by galiganu at 2021-11-13 10:29
Php Debugger to run in terminal to debug your code easily.
Php Debugger to run in terminal to debug your code easily.

What is Dephpugger? Dephpugger (read depugger) is an open source lib to make a debug in php direct in terminal, without necessary configure an IDE. Th

May 20, 2022
Php Debugger to run in terminal to debug your code easily.
Php Debugger to run in terminal to debug your code easily.

What is Dephpugger? Dephpugger (read depugger) is an open source library that allows a developer to debug in php direct in terminal, without necessary

May 20, 2022
Runs artisan command in web application
Runs artisan command in web application

Laravel Terminal Installation composer require recca0120/terminal --dev OR Add Presenter to your composer.json file: "require-dev": { "recca0120/t

Jun 25, 2022
A simple Craft module, inspired by Mildly Geeky's "Kint", to debug Twig within your browser
A simple Craft module, inspired by Mildly Geeky's

A simple Craft module, inspired by Mildly Geeky's "Kint", to debug Twig within your browser

Feb 2, 2022
Laravel Debugbar (Integrates PHP Debug Bar)
Laravel Debugbar (Integrates PHP Debug Bar)

Laravel Debugbar This is a package to integrate PHP Debug Bar with Laravel. It includes a ServiceProvider to register the debugbar and attach it to th

Jun 24, 2022
An elegant debug assistant for the Laravel framework.
An elegant debug assistant for the Laravel framework.

Introduction Laravel Telescope is an elegant debug assistant for the Laravel framework. Telescope provides insight into the requests coming into your

Jul 1, 2022
Debug bar for PHP
Debug bar for PHP

PHP Debug Bar Displays a debug bar in the browser with information from php. No more var_dump() in your code! Features: Generic debug bar Easy to inte

Jun 26, 2022
PHP Debug Console
PHP Debug Console

PHP Console A web console to try your PHP code into Creating a test file or using php's interactive mode can be a bit cumbersome to try random php sni

Jun 15, 2022
Extends the Debug Bar plugin for the Sophi.io service
Extends the Debug Bar plugin for the Sophi.io service

Debug Bar for Sophi.io Extends the Debug Bar plugin for the Sophi.io service Requirements PHP 7.4+ WordPress 5.6+ Sophi.io 1.1.0+ Debug Bar 1.0+ Insta

May 19, 2022
A beautiful error page for Laravel apps
A beautiful error page for Laravel apps

Ignition: a beautiful error page for Laravel apps Ignition is a beautiful and customizable error page for Laravel applications running on Laravel 5.5

Jun 27, 2022
Test your routes without hassle
Test your routes without hassle

Laravel Api Tester Live demo Try it out: laravel-api-tester.asva.by Docs Those are short and easy to read. Take a look. Interface FAQ Installation Req

Jun 22, 2022
Restart a CLI process without loading the xdebug extension.

composer/xdebug-handler Restart a CLI process without loading the Xdebug extension, unless xdebug.mode=off. Originally written as part of composer/com

Jun 29, 2022
Clockwork - php dev tools in your browser - server-side component
Clockwork - php dev tools in your browser - server-side component

Clockwork is a development tool for PHP available right in your browser. Clockwork gives you an insight into your application runtime - including requ

Jun 29, 2022
😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.
😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.

Tracy - PHP debugger Introduction Tracy library is a useful helper for everyday PHP programmers. It helps you to: quickly detect and correct errors lo

Jun 26, 2022
The VarDumper component provides mechanisms for walking through any arbitrary PHP variable. It provides a better dump() function that you can use instead of var_dump().

VarDumper Component The VarDumper component provides mechanisms for walking through any arbitrary PHP variable. It provides a better dump() function t

Jun 29, 2022
Generate Laravel test factories from your existing models

Laravel Test Factory Generator php artisan generate:model-factory This package will generate factories from your existing models so you can get starte

Jul 2, 2022
An artisan command to tail your application logs
An artisan command to tail your application logs

Easily tail your logs This package offers an artisan command to tail the application log. It supports daily and single logs on your local machine. To

Jun 16, 2022
Laravel Dumper - Improve the default output of dump() and dd() in Laravel projects

Laravel Dumper Improve the default output of dump() and dd() in Laravel projects. Improves the default dump behavior for many core Laravel objects, in

May 25, 2022
This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception Tracking.

Tideways Middleware for Laravel Octane This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception T

Jan 6, 2022