0

Debug Laravel "Xuyên Không" Với Spatie Ray: Chia Tay dd() và Log File Truyền Thống

Là một Laravel Developer, chắc hẳn bạn đã quá quen thuộc với bộ đôi "huyền thoại" dd()dump(). Tuy nhiên, nhược điểm của chúng là làm gián đoạn luồng thực thi của ứng dụng và làm xấu giao diện Frontend.

Hôm nay, mình sẽ giới thiệu với các bạn Ray – một công cụ debug "xịn xò" từ nhà Spatie. Ray giúp bạn gửi dữ liệu debug đến một ứng dụng Desktop riêng biệt mà không làm dừng chương trình. Hãy cùng xem nó có gì lợi hại nhé!

1. Ray là gì và tại sao nên dùng nó?

Ray là một ứng dụng Desktop (hỗ trợ MacOS, Windows, Linux) đóng vai trò như một "trạm thu nhận" dữ liệu debug. Thay vì in dữ liệu ra màn hình trình duyệt, bạn gửi nó đến Ray.

Tại sao Ray lại vượt trội?

  • Không làm dừng app: Code vẫn chạy tiếp, dữ liệu vẫn được đẩy đi.
  • Giao diện sạch sẽ: Hỗ trợ format JSON, SQL, Collection cực đẹp.
  • Đa nền tảng: Bạn có thể debug từ Local, Docker, thậm chí là từ Server từ xa.
  • Hỗ trợ đặc biệt cho Laravel: Tự động bắt các truy vấn SQL, Mail, View, và cả Job.

2. Hướng dẫn cài đặt nhanh

Bước 1: Cài đặt ứng dụng Desktop

Truy cập myray.app để tải và cài đặt ứng dụng Ray về máy tính của bạn.

Bước 2: Cài đặt Package vào dự án Laravel Mở terminal tại thư mục dự án và chạy lệnh:

composer require spatie/laravel-ray --dev

Bước 3: Cấu hình (Tùy chọn) Nếu bạn dùng Docker (như Sail) hoặc máy ảo, hãy xuất file config để điều chỉnh IP của máy host:

php artisan vendor:publish --library="Spatie\LaravelRay\RayServiceProvider" --tag="config"

3. Các tuyệt chiêu sử dụng Ray trong Laravel

Thay vì dd($user), bây giờ bạn sẽ dùng ray($user). Nhưng Ray còn làm được nhiều hơn thế:

3.1. Debug dữ liệu cơ bản

Bạn có thể gắn màu sắc hoặc nhãn để dễ phân biệt các biến:

ray($user)->green(); // Hiện màu xanh
ray($order)->orange()->label('Đơn hàng mới'); // Gắn nhãn và màu cam

3.2. Soi câu lệnh SQL (Show Queries)

Đây là tính năng mình thích nhất. Bạn không cần cài Debugbar mà vẫn soi được SQL:

ray()->showQueries();

$users = User::where('active', 1)->get(); // Câu SQL sẽ tự nhảy sang app Ray

3.3. Đo hiệu năng (Measure) Bạn muốn biết một đoạn code chạy mất bao lâu?

ray()->measure();

// Đoạn code phức tạp cần kiểm tra...
sleep(1);

ray()->measure(); // Ray sẽ hiển thị thời gian đã trôi qua kể từ lần gọi trước

3.4. Theo dõi Mail và View

Mỗi khi hệ thống gửi Mail, Ray sẽ bắt lấy nội dung mail và hiển thị ngay lập tức để bạn kiểm tra giao diện mà không cần mở Mailtrap.

ray()->showMails();

4. Debug từ xa với SSH Tunnel

Một tính năng cực "đáng tiền" của Ray là bạn có thể debug code đang chạy trên Server Staging hoặc Production ngay trên máy cá nhân của mình thông qua SSH Tunnel.

Câu lệnh thần thánh:

ssh -R 23517:localhost:23517 user@your-server.com

Lúc này, mọi lệnh ray() trên server sẽ "bay" về ứng dụng Ray đang mở trên máy bạn. Quá ảo diệu phải không?

5. So sánh Ray với các công cụ khác

Tính năng dd() / dump() Laravel Debugbar Spatie Ray
Dừng chương trình Không Không
Ảnh hưởng UI Có (Làm vỡ layout) Có (Thêm thanh toolbar) Không (Dùng app riêng)
Debug API/Ajax Khó nhìn Khó cấu hình Cực kỳ mượt mà
Debug trong CLI/Job Khó Không hỗ trợ tốt Hoàn hảo

Kết luận

Spatie Ray không chỉ là một công cụ debug, nó là một trải nghiệm giúp workflow của developer trở nên chuyên nghiệp và "sướng" hơn rất nhiều. Dù đây là một công cụ trả phí (có bản dùng thử), nhưng những giá trị về thời gian và sự tiện lợi mà nó mang lại là hoàn toàn xứng đáng.

Hãy thử cài đặt và cảm nhận sự khác biệt so với cách debug truyền thống nhé!

Hy vọng bài viết này giúp anh em Laravel "diệt bug" nhanh hơn. Đừng quên nhấn Follow và Upvote để ủng hộ mình ra thêm các bài viết về hệ sinh thái Laravel nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí