I am trying to start my clojure application on my heroku dyno but I keep
getting and error in my stuartsierra.component/start.
Below is my core file containing my main function.
(defrecord Listener [listener]
component/Lifecycle
(start [component]
(assoc component :listener (yada/listener
["/"
[(view/view-route)
routes/route-handler
["public/" (new-directory-resource
(io/file "target/cljsbuild/public") {})]
[true (as-resource nil)]]]
(or (env :port) (get (read-config
"resources/config.edn" {:profile :dev}) :webserver))
)))
(stop [component]
(when-let [close (-> component :listener :close)]
(close))
(assoc component :listener nil)))
(defn new-system []
(component/system-map
:listener (map->Listener {})
))
(def system nil)
(defn init []
(alter-var-root #'system
(constantly (new-system))))
(defn start []
(alter-var-root #'system component/start))
(defn stop []
(alter-var-root #'system
(fn [s] (when s (component/stop s)))))
(defn go []
(init)
(start))
(defn reset []
(stop)
(refresh :after 'web.core/go))
(defn -main
[& [port]]
(component/start (new-system))
(println "System Started")
@(promise))
This is my core file with all my stuartsierra.component code. This all
works perfectly when I run it locally on my laptop doing lein repl and then
(go) and also when I just do lein run. So I am confused as to why it
doesn't work when I push this to the heroku dyno.
The error I get is
Exception in thread "main" clojure.lang.ExceptionInfo: Error in component
:listener in system com.stuartsierra.component.SystemMap calling
#'com.stuartsierra.component/start {:reason
:com.stuartsierra.component/component-function-threw-exception, :function
#'com.stuartsierra.component/start, :system-key :listener, :component
#web.core.Listener{:listener nil}, :system #<SystemMap>},
compiling:(/tmp/form-init9049917434081554913.clj:1:73)
This is telling me that my :listener is nil in the system-map. When I check
locally (doing lein repl (go)) in (keys system) is (:listener) which is
good so that means that the listener is starting and is in the system.
When I do (-> system :listener) I get #web.core.Listener{:listener {:port
3300, :close #object[yada.aleph$listener$fn__21671 0xa5d4865
"yada.aleph$listener$fn__21671@a5d4865"], :server
#object[aleph.netty$start_server$reify__13574 0x3cc9a232
"aleph.netty$start_server$reify__13574@3cc9a232"]}} which is perfect as the
port has loaded up (3300) and the server has started.
This makes it all the more confusing as to why the :listener is nil in my
heroku app
Any help would be much appreciated. Thanks
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.