Code Monkey home page Code Monkey logo

Comments (2)

lvh avatar lvh commented on July 25, 2024

Here is the full exception:

Exception in thread "main" clojure.lang.ExceptionInfo: Call to clojure.core/defn did not conform to spec:
In: [2 2] val: [{:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}] fails spec: :clojure.core.specs/local-name at: [:args :bs :arity-1 :args :varargs :form :sym] predicate: simple-symbol?
In: [2 2 0] val: ({:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}) fails spec: :clojure.core.specs/seq-binding-form at: [:args :bs :arity-1 :args :varargs :form :seq] predicate: (cat :elems (* :clojure.core.specs/binding-form) :rest (? (cat :amp #{(quote &)} :form :clojure.core.specs/binding-form)) :as (? (cat :as #{:as} :sym :clojure.core.specs/local-name))),  Extra input
In: [2 2 0] val: {:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts} fails spec: :clojure.core.specs/map-binding at: [:args :bs :arity-1 :args :varargs :form :map :mb] predicate: vector?
In: [2 2 0] val: {:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts} fails spec: :clojure.core.specs/ns-keys at: [:args :bs :arity-1 :args :varargs :form :map :nsk] predicate: vector?
In: [2 2 0] val: {:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts} fails spec: :clojure.core.specs/map-bindings at: [:args :bs :arity-1 :args :varargs :form :map :msb] predicate: vector?
In: [2 2] val: [{:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}] fails spec: :clojure.core.specs/map-special-binding at: [:args :bs :arity-1 :args :varargs :form :map] predicate: map?
In: [2 0] val: handler fails spec: :clojure.core.specs/arg-list at: [:args :bs :arity-n :bodies :args] predicate: vector?
:clojure.spec/args  (wrap-exceptions "Let Prone handle exeptions instead of Ring. This way, instead of a centered\n   stack trace, errors will give you a nice interactive page where you can browse\n   data, filter the stack trace and generally get a good grip of what is\n   happening.\n\n   Optionally, supply a opts map to specify namespaces to include,\n   a predicate function to exclude certain requests from prone, and a boolean\n   value to silence printing of exception stacktraces e.g.:\n\n   => (wrap-exceptions handler {:app-namespaces ['your-ns-1 'my.ns.to-show]\n                                :skip-prone? (fn [req] (not-browser? req)\n                                :print-stacktraces? false})" [handler & [{:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}]] (fn [req] (if-let [page (get (clojure.core/deref pages) (:uri req))] (serve-page page 200) (if-let [asset (asset-url->contents (:uri req))] {:body asset, :status 200, :headers {"Cache-Control" "max-age=315360000"}} (binding [debug/*debug-data* (atom [])] (if (and skip-prone? (skip-prone? req)) (handler req) (try (let [result (handler req)] (if (< 0 (count (clojure.core/deref debug/*debug-data*))) (debug-response req (clojure.core/deref debug/*debug-data*)) result)) (catch Exception e (when print-stacktraces? (.printStackTrace e)) (exceptions-response req e app-namespaces)))))))))
 #:clojure.spec{:problems ({:path [:args :bs :arity-1 :args :varargs :form :sym], :pred simple-symbol?, :val [{:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}], :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list :clojure.core.specs/binding-form :clojure.core.specs/binding-form :clojure.core.specs/local-name], :in [2 2]} {:path [:args :bs :arity-1 :args :varargs :form :seq], :reason "Extra input", :pred (cat :elems (* :clojure.core.specs/binding-form) :rest (? (cat :amp #{(quote &)} :form :clojure.core.specs/binding-form)) :as (? (cat :as #{:as} :sym :clojure.core.specs/local-name))), :val ({:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}), :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list :clojure.core.specs/binding-form :clojure.core.specs/binding-form :clojure.core.specs/seq-binding-form], :in [2 2 0]} {:path [:args :bs :arity-1 :args :varargs :form :map :mb], :pred vector?, :val {:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}, :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list :clojure.core.specs/binding-form :clojure.core.specs/binding-form :clojure.core.specs/map-binding-form :clojure.core.specs/map-bindings :clojure.core.specs/map-binding], :in [2 2 0]} {:path [:args :bs :arity-1 :args :varargs :form :map :nsk], :pred vector?, :val {:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}, :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list :clojure.core.specs/binding-form :clojure.core.specs/binding-form :clojure.core.specs/map-binding-form :clojure.core.specs/map-bindings :clojure.core.specs/ns-keys], :in [2 2 0]} {:path [:args :bs :arity-1 :args :varargs :form :map :msb], :pred vector?, :val {:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}, :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list :clojure.core.specs/binding-form :clojure.core.specs/binding-form :clojure.core.specs/map-binding-form :clojure.core.specs/map-bindings], :in [2 2 0]} {:path [:args :bs :arity-1 :args :varargs :form :map], :pred map?, :val [{:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}], :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list :clojure.core.specs/binding-form :clojure.core.specs/binding-form :clojure.core.specs/map-binding-form :clojure.core.specs/map-special-binding], :in [2 2]} {:path [:args :bs :arity-n :bodies :args], :pred vector?, :val handler, :via [:clojure.core.specs/defn-args :clojure.core.specs/args+body :clojure.core.specs/args+body :clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list], :in [2 0]}), :args (wrap-exceptions "Let Prone handle exeptions instead of Ring. This way, instead of a centered\n   stack trace, errors will give you a nice interactive page where you can browse\n   data, filter the stack trace and generally get a good grip of what is\n   happening.\n\n   Optionally, supply a opts map to specify namespaces to include,\n   a predicate function to exclude certain requests from prone, and a boolean\n   value to silence printing of exception stacktraces e.g.:\n\n   => (wrap-exceptions handler {:app-namespaces ['your-ns-1 'my.ns.to-show]\n                                :skip-prone? (fn [req] (not-browser? req)\n                                :print-stacktraces? false})" [handler & [{:keys [app-namespaces skip-prone? print-stacktraces?], :or {:print-stacktraces? true}, :as opts}]] (fn [req] (if-let [page (get (clojure.core/deref pages) (:uri req))] (serve-page page 200) (if-let [asset (asset-url->contents (:uri req))] {:body asset, :status 200, :headers {"Cache-Control" "max-age=315360000"}} (binding [debug/*debug-data* (atom [])] (if (and skip-prone? (skip-prone? req)) (handler req) (try (let [result (handler req)] (if (< 0 (count (clojure.core/deref debug/*debug-data*))) (debug-response req (clojure.core/deref debug/*debug-data*)) result)) (catch Exception e (when print-stacktraces? (.printStackTrace e)) (exceptions-response req e app-namespaces)))))))))}, compiling:(prone/middleware.clj:98:1)

The problem is in this line: https://github.com/magnars/prone/blob/master/src/prone/middleware.clj#L111-L112 specifically that the :or default has a keyword key and that should be a symbol instead. I will submit a PR.

from prone.

magnars avatar magnars commented on July 25, 2024

1.1.2 released with this fix.

from prone.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.