boot

:boot-clj: https://boot-clj.github.io/ — build tooling for Clojure. Dev chat in #boot-dev
2018-10-16T03:22:04.000100Z

started a new project with shiny cider, boot-cljs-repl versions and can't for the life of me get the repl to connect

2018-10-16T03:24:52.000100Z

I get as far as

&lt;&lt; started Weasel server on <ws://127.0.0.1:53304> &gt;&gt;
&lt;&lt; waiting for client to connect ... Connection is <ws://localhost:53304>
Writing boot_cljs_repl.cljs...
And i see my cljs being recompiled and reloaded.. but the websocket never connects

richiardiandrea 2018-10-16T03:33:16.000100Z

This might be related: https://github.com/clojure-emacs/cider/issues/2403

2018-10-16T03:33:57.000100Z

weird. changed the order of my pipeline and it magically works now

2018-10-16T03:34:11.000100Z

not happy about it but can get on with work for now

richiardiandrea 2018-10-16T03:43:06.000100Z

Cool, yeah I never got to fix that, weird that investing works ... 🤷

hmaurer 2018-10-16T18:42:38.000100Z

I am getting the following error:

java.lang.Exception: No namespace: reply.eval-modes.nrepl found
with
BOOT_CLOJURE_VERSION=1.10.0-beta3
BOOT_VERSION=2.8.2
when running boot repl Any idea why?

hmaurer 2018-10-16T18:44:32.000100Z

nvm found https://github.com/technomancy/leiningen/issues/2465

hmaurer 2018-10-16T18:44:44.000100Z

perhaps it will give me a hint, even if it’s lein

hmaurer 2018-10-16T18:59:56.000100Z

yeah no, I’ve no idea what’s going on :thinking_face:

seancorfield 2018-10-16T19:25:30.000100Z

I suspect -- based on the lein issue and repro'ing your error locally -- that this is due to using nrepl in a context that expects org.clojure/tools.nrepl @hmaurer

hmaurer 2018-10-16T19:26:02.000100Z

hum; all I did was setup a very basic boot project and run boot repl

seancorfield 2018-10-16T19:26:33.000100Z

java.lang.Exception: No namespace: reply.eval-modes.nrepl found
REPL-y 0.4.1, nREPL 0.4.4
Shows nrepl "0.4.4" which is the "new" version of nREPL. Yeah, it's nothing you're doing wrong.

hmaurer 2018-10-16T19:27:07.000100Z

So should I just ignore this error? Or can I fix it?

seancorfield 2018-10-16T19:27:38.000100Z

Use Boot 2.8.1

BOOT_CLOJURE_VERSION=1.10.0-beta3 BOOT_VERSION=2.8.1 boot repl
...
nREPL server started on port 55602 on host 127.0.0.1 - <nrepl://127.0.0.1:55602>
REPL-y 0.3.7, nREPL 0.2.13
Clojure 1.10.0-beta3
This uses the older REPL-y and org.clojure/tools.nrepl instead.

hmaurer 2018-10-16T19:28:21.000100Z

ah yep, that fixed it

hmaurer 2018-10-16T19:28:22.000100Z

thanks!

seancorfield 2018-10-16T19:28:46.000100Z

Boot's changelog shows that 2.8.2 is a breaking change https://github.com/boot-clj/boot/blob/master/CHANGES.md

seancorfield 2018-10-16T19:29:09.000100Z

(breaking behavior on a PATCH LEVEL release seems... inadvisable)

hmaurer 2018-10-16T19:29:25.000100Z

Follow up question: I am (stupidly) struggling a bit to setup a nice repl-driven dev env. I added org.clojure/tools.namespace to my project and tried to use (refresh), but, while it appears to be reloading my app’s namespace, it doesn’t appear to change the value of a var I shoved in there (`app/answer`)

hmaurer 2018-10-16T19:30:27.000100Z

Any pointer?

hmaurer 2018-10-16T19:30:59.000100Z

ps: I don’t want to use CIDER/similar right now

seancorfield 2018-10-16T19:31:06.000100Z

No clue. I've never had much luck with the "reloaded" workflow. But then we have a codebase with some legacy globals (that we're moving away from).

hmaurer 2018-10-16T19:31:26.000200Z

I assume you use CIDER to reload stuff/work with the REPL then?

seancorfield 2018-10-16T19:31:31.000100Z

Nope.

hmaurer 2018-10-16T19:31:43.000100Z

How do you reload things in the repl?

seancorfield 2018-10-16T19:32:05.000100Z

I don't.

hmaurer 2018-10-16T19:32:20.000100Z

How do you iteratively develop / test things then? restarting the repl takes ages

seancorfield 2018-10-16T19:32:32.000100Z

I almost never need to restart my REPL.

hmaurer 2018-10-16T19:32:54.000100Z

Well, how do you modify some code and test that new code in the repl then?

seancorfield 2018-10-16T19:33:18.000100Z

I modify the code and eval the form (into the REPL).

hmaurer 2018-10-16T19:33:40.000100Z

you copy-paste it? :thinking_face:

seancorfield 2018-10-16T19:33:47.000100Z

(I also don't type into the REPL -- per Stu Halloway's REPL-driven development talk)

hmaurer 2018-10-16T19:33:55.000100Z

ah

seancorfield 2018-10-16T19:34:30.000100Z

I use Atom/ProtoREPL. Evaluating code is just control-, b to evaluate a form or control-, B to evaluate the top-level form.

hmaurer 2018-10-16T19:35:24.000200Z

Oh, I use atom as well. I’ll try protorepl

seancorfield 2018-10-16T19:35:36.000100Z

I can do that without saving the file so it's a very smooth workflow. I have (comment ...) forms with any additional code I need -- and that's also where I write "experiments" as I work, some of which might become tests later.

seancorfield 2018-10-16T19:37:17.000100Z

The (comment ...) form will have stop/start calls for my test system component if needed, so I can easily restart my app if I need to -- but mostly I can start it up once (eval'ing (def a (component/start (app/system ...))) from a comment form) and then just keep eval'ing code into that running image.

hmaurer 2018-10-16T19:45:49.000100Z

@seancorfield do you ever get this when an error occurs? https://puu.sh/BM7f0/f4a8e481ca.png

hmaurer 2018-10-16T19:48:02.000100Z

it seems to stick around

hmaurer 2018-10-16T20:30:44.000100Z

@seancorfield any idea? 😞

seancorfield 2018-10-16T20:44:56.000100Z

@hmaurer Sorry, was wrapped up in refactoring tests. Yes, that's the "ongoing execution" marker in ProtoREPL. You can clear it with control-shift-c

hmaurer 2018-10-16T20:45:13.000100Z

Oh no worries. And thanks! I’ll try that

seancorfield 2018-10-16T20:46:10.000100Z

(it would be nice if it detected exceptions from the REPL and cleared it automatically but...)

seancorfield 2018-10-16T20:46:37.000100Z

BTW, there's a #protorepl channel if you have non-Boot questions about Atom/ProtoREPL.

hmaurer 2018-10-16T20:46:46.000100Z

💯