There are at least some keyboard shortcuts you should be familiar with for
loading / compiling namespaces. Look a the "Using the REPL" section of
this: http://clojure-doc.org/articles/tutorials/emacs.html


On Sat, Dec 28, 2013 at 7:38 PM, larry google groups <
lawrencecloj...@gmail.com> wrote:

>
> I have been working with Clojure now some of the time for the last 18
> months, so I am no longer a complete noob. But I still have many questions
> about how to work at the REPL. In particular, I don't understand how the
> REPL interacts with the class path.
>
> I have an app that is working. When I need to make changes to it, my
> workflow goes like this:
>
> 1.) start emacs
>
> 2.) open a file in the project that I want to work in. I usually start by
> opening up the project.clj fie.
>
> 3.) type nrepl-jack-in to launch the repl.
>
> 4.) load whatever file holds the (main-) function that starts the app. So
> for me, for instance, it might be:
>
> (load-file “src/admin/core.clj”)
>
> 5.) switch to that namespace:
> (in-ns ‘admin.core)
>
> 6.) call the function that starts my app: (main-). Give it any arguments
> that it needs.
>
> 7.) do work. Moving around inside of the project tends to consist of a lot
> of loading a file:
>
> (load-file “src/admin/controller.clj”)
>
> and then switching to the namespace:
>
> (in-ns ‘admin.controller)
>
> However, I have a config file at:
>
> /resources/config/schema.edn
>
> If I open a terminal, cd to the top level of the directories where this
> app lives, and then run "lein uberjar" I get an app that works just fine if
> I do:
>
> java -jar admin-1-standalone.jar
>
> But when I want to work on this app at the REPL, the app seems unable to
> find the schema.edn file. You can see my REPL session below. The
> function (initiate-forms) has this line:
>
>  (read-string (slurp (clojure.java.io/resource "config/schema.edn")))
>
> This should run when the app starts and then it is stored in
> secretary/interactions, but below you can see that secretary/interactions
> is empty.
>
> Why does this work when I run the app from the command line? What do I
> need to do to get this work when I'm in the REPL? I am assuming the problem
> here has something to do with the classpath, please tell me if I'm wrong.
>
>
>
> admin.controller> (load-file "src/admin/core.clj")
> #'admin.core/-main
> admin.controller> (in-ns 'admin.core)
> #<Namespace admin.core>
> admin.core> (ns-publics 'admin.core)
> {-main #'admin.core/-main}
> admin.core> (-main "35000")
> App 'TMA admin' is starting.
> If no port is specified then we will default to port 34000.
> You can set this app to production mode, where debugging output to the
> terminal is surpressed, by starting it like this:
> java -jar target/admin-1-standalone.jar  30001 production
> #<Server org.eclipse.jetty.server.Server@70faf7c7>
> admin.core> (load-file "src/admin/secretary.clj")
> {:dire/error-handlers {java.lang.NullPointerException
> #<secretary$eval1798$fn__1799 admin.secretary$eval1798$fn__1799@7a4311f9>},
> :ns #<Namespace admin.queries>, :name process-some-fetch-function,
> :arglists ([function-to-call-to-get-data-from-monger map-for-queries]),
> :column 1, :line 124, :file "admin/queries.clj"}
> admin.core> (in-ns 'admin.secretary)
> #<Namespace admin.secretary>
> admin.secretary> interactions
> #<Atom@4d1fafe8: {}>
> admin.secretary> @interactions
> {}
> admin.secretary> (load-file "src/admin/startup.clj")
> #'admin.startup/start-channels
> admin.secretary> (in-ns 'admin.startup)
> #<Namespace admin.startup>
> admin.startup> (ns-publics 'admin.startup)
> {start-channels #'admin.startup/start-channels, initiate-forms
> #'admin.startup/initiate-forms, connect-to-database
> #'admin.startup/connect-to-database, set-the-current-debugging-level
> #'admin.startup/set-the-current-debugging-level}
> admin.startup> (start-channels)
> nil
> admin.startup> (initiate-forms)
> cannot read object
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> 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 clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to