alshenetsky/symfony-roadrunner-dumper
Installation:
composer require --dev alshenetsky/symfony-roadrunner-dumper "^1.0"
Ensure you’re in a dev dependency context (e.g., require-dev in composer.json).
First Use Case:
Replace any dd() calls in your Symfony/Laravel + Roadrunner app with:
\dev\dd($yourVariable);
This avoids the worker error: invalid data found in the buffer issue in Roadrunner.
Where to Look First:
Debugging in Roadrunner:
\dev\dd() exclusively in Roadrunner-powered Symfony/Laravel apps to bypass buffer issues.// Controller/Command
public function index() {
$data = $this->fetchData();
\dev\dd($data); // Works in Roadrunner
}
Integration with Symfony Components:
VarDumper (under the hood). No config changes needed.Laravel Adaptation:
\dev\dd in app/Console/Kernel.php or a service provider:
use function Alshenetsky\SymfonyRoadrunnerDumper\dd;
// Alias for convenience
if (!function_exists('dev_dd')) {
function dev_dd($var) { dd($var); } // Override or extend
}
Async/Queue Debugging:
// In a Roadrunner worker (e.g., queue listener)
\dev\dd($message->payload); // Safe for async contexts
Testing:
Buffer Conflicts:
dd() fails in Roadrunner because it echoes directly to STDOUT, which Roadrunner’s workers don’t handle.\dev\dd() in Roadrunner environments.Dev vs. Prod:
require-dev). Ensure it’s excluded from production builds.Symfony Context:
autoload-dev section in composer.json includes:
"autoload-dev": {
"psr-4": {
"Alshenetsky\\SymfonyRoadrunnerDumper\\": "vendor/alshenetsky/symfony-roadrunner-dumper/src/"
}
}
Roadrunner Worker Logs:
rr get-worker-log
or configure logging in rr.yaml.Verify Installation:
composer dump-autoload --dev if \dev\dd is not recognized.Custom Output:
VarDumper:
use Symfony\Component\VarDumper\Cloner\Data;
use Symfony\Component\VarDumper\Dumper\CliDumper;
$dumper = new CliDumper();
$dumper->dump(new Data($yourVariable));
Performance:
\dev\dd() in hot paths (e.g., loops). Use sparingly in dev environments.Laravel-Specific:
dev namespace is accessible. Add to composer.json:
"extra": {
"laravel": {
"providers": ["Alshenetsky\\SymfonyRoadrunnerDumper\\SymfonyRoadrunnerDumperServiceProvider"]
}
}
Custom Dumper:
namespace App\Dumper;
use Alshenetsky\SymfonyRoadrunnerDumper\Dumper;
class CustomDumper extends Dumper {
public function dump($var) {
file_put_contents('debug.log', print_r($var, true));
}
}
Roadrunner Config:
rr.yaml to handle dumps:
server:
command: "php bin/console"
relay: "pipes"
worker:
pool:
num_workers: 4
# Log dumps to a file
log: "/var/log/roadrunner/debug.log"
How can I help you explore Laravel packages today?