A Ring middleware for enhanced exception reporting and debugging in Clojure web applications.
Prone is a Ring middleware for Clojure web applications that enhances exception reporting and debugging. It provides a visually rich error page with filtered stack traces, interactive data inspection, and a debug function for runtime exploration. It solves the problem of cryptic stack traces and limited debugging context in development.
Clojure web developers using Ring or compatible frameworks (like Pedestal or Catacumba) who want better debugging and error visualization during development.
Developers choose Prone for its Rails-inspired, interactive error pages that make debugging faster and more intuitive, with features like application-frame filtering, environment data browsing, and AJAX support not found in standard Ring error handlers.
Better exception reporting middleware for Ring.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically filters out non-application frames based on project namespaces, presenting cleaner traces that focus on relevant code, as highlighted in the enhanced stack traces feature.
The debug function allows real-time inspection of local bindings, request maps, and custom data during runtime, mimicking Rails' better_errors for hands-on debugging.
Includes a Link header for error page access in AJAX requests, with provided frontend code examples, making it useful for modern web applications with ClojureScript.
Offers settings like :skip-prone? and :app-namespaces to customize error handling for specific requests or namespaces, adding flexibility as shown in the Q&A.
Exposes internal data and is explicitly warned against in production, requiring additional configuration like property-based enabling to avoid security risks.
Built primarily for Ring; support for frameworks like Pedestal or Catacumba depends on external libraries, which may lack maintenance or features.
Has persistent bugs such as difficulty differentiating kebab-case and snake-case function names and conflicts with middlewares like Austin's browser-connected-repl, as noted in the known problems.
Requires manual middleware wrapping and configuration, such as using system properties for enabling, which can be error-prone compared to automated tools.