boot-clj / boot-figreload

Boot task providing live-reload using Fighweel client
Eclipse Public License 1.0
49 stars 1 forks source link

newly added files cause IllegalArgumentException #4

Closed mbuczko closed 7 years ago

mbuczko commented 7 years ago

It's (hopefully) easy to reproduce - just try to create a new file having boot-figreload task running. It ends up with following exception:

java.lang.IllegalArgumentException:
/Users/michal/.boot/cache/tmp/Users/michal/workspace/clojure/demo/1g9l/-of1h48/scripts/foo.js is not a relative path
arichiardi commented 7 years ago

Uhm, weird it works here, can you post the full stacktrace?

mbuczko commented 7 years ago

sure, I haven't described it before but this issue occurs only when there is already websocket client connected. here is a full stacktrace:

                                                                java.lang.Thread.run                  Thread.java:  745
                                  java.util.concurrent.ThreadPoolExecutor$Worker.run      ThreadPoolExecutor.java:  617
                                   java.util.concurrent.ThreadPoolExecutor.runWorker      ThreadPoolExecutor.java: 1142
                                                 java.util.concurrent.FutureTask.run              FutureTask.java:  266
                                                                                 ...
                                                 clojure.core/binding-conveyor-fn/fn                     core.clj: 1938
                                                                   boot.core/boot/fn                     core.clj: 1029
                                                                 boot.core/run-tasks                     core.clj: 1019
                                                      boot.task.built-in/fn/fn/fn/fn                 built_in.clj:  427
                                                   boot.task.built-in/fn/fn/fn/fn/fn                 built_in.clj:  430
                                                boot.task.built-in/fn/fn/fn/fn/fn/fn                 built_in.clj:  430
                                                      boot.task.built-in/fn/fn/fn/fn                 built_in.clj:  236
                                         powerlaces.boot-figreload/eval1305/fn/fn/fn           boot_figreload.clj:  232
                                             powerlaces.boot-figreload/send-changed!           boot_figreload.clj:   62
                                                                   boot.pod/call-in*                      pod.clj:  413
                                                                                 ...
                         org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke  ClojureRuntimeShimImpl.java:  102
                         org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke  ClojureRuntimeShimImpl.java:  109
                                                                                 ...
                                                                   boot.pod/call-in*                      pod.clj:  410
                                                               boot.pod/eval-fn-call                      pod.clj:  359
                                                                  clojure.core/apply                     core.clj:  646
                                                                                 ...
                                      powerlaces.boot-figreload.server/send-changed!                   server.clj:   61
                                                                   clojure.core/mapv                     core.clj: 6618
                                                                 clojure.core/reduce                     core.clj: 6545
                                                         clojure.core.protocols/fn/G                protocols.clj:   13
                                                           clojure.core.protocols/fn                protocols.clj:   75
                                                   clojure.core.protocols/seq-reduce                protocols.clj:   24
                                                                    clojure.core/seq                     core.clj:  137
                                                                                 ...
                                                                 clojure.core/map/fn                     core.clj: 2646
                                                             clojure.core/partial/fn                     core.clj: 2515
                                                                                 ...
                                     powerlaces.boot-figreload.figwheel/eval14705/fn                 figwheel.clj:  108
                                                                   clojure.core/mapv                     core.clj: 6618
                                                                 clojure.core/reduce                     core.clj: 6544
                                                                                 ...
                                                                clojure.core/mapv/fn                     core.clj: 6627
                                  powerlaces.boot-figreload.figwheel/sendable-js-map                 figwheel.clj:   86
                                  powerlaces.boot-figreload.figwheel/guess-namespace                 figwheel.clj:   67
          figwheel-sidecar.build-middleware.javascript-reloading/js-file->namespaces     javascript_reloading.clj:   39
               figwheel-sidecar.build-middleware.javascript-reloading/best-try-js-ns     javascript_reloading.clj:   34
figwheel-sidecar.build-middleware.javascript-reloading/cljs-target-file-from-foreign     javascript_reloading.clj:   15
                                                                clojure.java.io/file                       io.clj:  426
                                                    clojure.java.io/as-relative-path                       io.clj:  414
java.lang.IllegalArgumentException: /Users/michal/.boot/cache/tmp/Users/michal/workspace/clojure/ekg/tgz/-of1h48/scripts/foo.js is not a relative path
Elapsed time: 0.846 sec

please also take a look at the simple project which should help reproducing this problem:

https://github.com/mbuczko/ekg

steps to reproduce:

  1. clone repo
  2. boot dev go
  3. go to http://localhost:8080/
  4. create a js file in assets/scripts
  5. exception shows :)
arichiardi commented 7 years ago

Awesome thanks I will get back to you

kommen commented 7 years ago

@arichiardi Is there anything I can help with here?

arichiardi commented 7 years ago

I wrote Bruce in the attached issue, but I haven't had time to implement the solution described there, whoever is free can go ahead of course. I can help with refining the piece of code. I will indeed try to tackle this fairly soon. Just very busy at the moment.

arichiardi commented 7 years ago

There is a patch in lein-figwheel now but tests are a bit off and Bruce hasn't had the time for looking at it I guess.