http://reval-mocchi.rhcloud.com

LuminusでCookieを扱った際に起きたバグ

responseの:cookiesの中にある:valueでnilがあると例外が起きる.

{:status 200, 
 :headers {"Content-Type" "text/html; charset=utf-8"}, 
 :body "response", 
 :session {:key "value"}, 
 :cookies {"app-session-id" {:value nil}}}

option:enable title:responseをdumpした結果

nilがないようにすれば解決した.

                                                           java.lang.Thread.run                    Thread.java:  745
                             java.util.concurrent.ThreadPoolExecutor$Worker.run        ThreadPoolExecutor.java:  617
                              java.util.concurrent.ThreadPoolExecutor.runWorker        ThreadPoolExecutor.java: 1142
                                    io.undertow.server.HttpServerExchange$1.run        HttpServerExchange.java:  759
                               io.undertow.server.Connectors.executeRootHandler                Connectors.java:  197
              io.undertow.server.session.SessionAttachmentHandler.handleRequest  SessionAttachmentHandler.java:   68
org.projectodd.wunderboss.web.async.websocket.UndertowWebsocket$2.handleRequest         UndertowWebsocket.java:  103
         immutant.web.internal.undertow/create-http-handler/reify/handleRequest                   undertow.clj:  130
                                   astragalus.middleware/wrap-internal-error/fn                 middleware.clj:   33
                                          astragalus.middleware/wrap-context/fn                 middleware.clj:   28
                         ring.middleware.x-headers/wrap-content-type-options/fn                  x_headers.clj:   53
                                ring.middleware.x-headers/wrap-frame-options/fn                  x_headers.clj:   38
                               ring.middleware.x-headers/wrap-xss-protection/fn                  x_headers.clj:   71
                              ring.middleware.not-modified/wrap-not-modified/fn               not_modified.clj:   52
                        ring.middleware.default-charset/wrap-default-charset/fn            default_charset.clj:   26
                              ring.middleware.content-type/wrap-content-type/fn               content_type.clj:   30
                                      ring.middleware.resource/wrap-resource/fn                   resource.clj:   28
                  ring.middleware.absolute-redirects/wrap-absolute-redirects/fn         absolute_redirects.clj:   36
                                        ring.middleware.cookies/wrap-cookies/fn                    cookies.clj:  161
                                          ring.middleware.params/wrap-params/fn                     params.clj:   64
                      ring.middleware.multipart-params/wrap-multipart-params/fn           multipart_params.clj:  117
                            ring.middleware.nested-params/wrap-nested-params/fn              nested_params.clj:   84
                          ring.middleware.keyword-params/wrap-keyword-params/fn             keyword_params.clj:   35
                                        ring.middleware.session/wrap-session/fn                    session.clj:  103
                                                                            ...                                     
                                       ring.middleware.session/session-response                    session.clj:   70
                                                                            ...                                     
                                       ring.middleware.cookies/cookies-response                    cookies.clj:  121
                                            ring.middleware.cookies/set-cookies                    cookies.clj:  102
                                                             clojure.core/doall                       core.clj: 3025
                                                             clojure.core/dorun                       core.clj: 3009
                                                               clojure.core/seq                       core.clj:  137
                                                                            ...                                     
                                  ring.middleware.cookies/write-cookies/iter/fn                    cookies.clj:   91
                                            ring.middleware.cookies/write-value                    cookies.clj:   61
                                                                            ...                                     
                                                    ring.util.codec/form-encode                      codec.clj:  108
                                                  ring.util.codec/eval1716/fn/G                      codec.clj:   81
                                                    ring.util.codec/eval1740/fn                      codec.clj:   93
                                                                            ...                                     
                                                            clojure.core/mapcat                       core.clj: 2660
                                                             clojure.core/apply                       core.clj:  630
                                                               clojure.core/seq                       core.clj:  137
                                                                            ...                                     
                                                            clojure.core/map/fn                       core.clj: 2624
                                                 ring.util.codec/eval1740/fn/fn                      codec.clj:   97
                                       ring.util.codec/eval1740/fn/encode-param                      codec.clj:   91
                                             ring.util.codec/eval1740/fn/encode                      codec.clj:   90
                                                  ring.util.codec/eval1716/fn/G                      codec.clj:   81
                                                clojure.core/-cache-protocol-fn               core_deftype.clj:  554
java.lang.IllegalArgumentException: No implementation of method: :form-encode* of protocol: #'ring.util.codec/FormEncodeable found for class: nil

option:enable title:発生した例外 style:terminal

2015-09-21 追記

Luminusというと語弊がありました. ringですね.