Raynes / fs

File system utilities for Clojure.
453 stars 119 forks source link

Why can I not access some vars that appear in source code for 'me.raynes.fs? #71

Closed lkrubner closed 9 years ago

lkrubner commented 10 years ago

If I look here:

https://github.com/Raynes/fs/blob/master/src/me/raynes/fs.clj

I see vars such as "normalized"

(defn normalized "Return normalized (canonical) file." [path](.getCanonicalFile %28file path%29))

and this appears to be public. But if I put this in code I get "no such var". So I double-check myself. I look in project.clj and make sure fs is present:

:dependencies [[org.clojure/clojure "1.5.1"] [dire "0.5.1"] [org.clojure/tools.namespace "0.2.4"] [lamina "0.5.0"] [me.raynes/fs "1.4.4"] [org.clojure/core.incubator "0.1.3"] [clj-time "0.6.0"]]

I also have:

:disable-implicit-clean true

which has sometimes tripped me up in the past, so I carefully run:

lein clean

at the command line. In my own code I have a namespace defined with:

(:require [me.raynes.fs :as fs]

and in my code I can use:

(fs/exists?)

but this:

(fs/normalized)

and this:

(fs/absolute)

gets me:

Caused by: java.lang.RuntimeException: No such var: fs/absolute, compiling:(tma_make_thumbnails/make_images.clj:56:22)

So I launch the repl and do this:

user> (require '[me.raynes.fs :as fs])

user> (ns-publics 'me.raynes.fs) {walk #'me.raynes.fs/walk, copy #'me.raynes.fs/copy, readable? #'me.raynes.fs/readable?, create #'me.raynes.fs/create, writeable? #'me.raynes.fs/writeable?, file #'me.raynes.fs/file, split #'me.raynes.fs/split, chmod #'me.raynes.fs/chmod, find-files* #'me.raynes.fs/find-files, mkdirs #'me.raynes.fs/mkdirs, directory? #'me.raynes.fs/directory?, delete #'me.raynes.fs/delete, tmpdir #'me.raynes.fs/tmpdir, child-of? #'me.raynes.fs/child-of?, sym-link #'me.raynes.fs/sym-link, ns-path #'me.raynes.fs/ns-path, parent #'me.raynes.fs/parent, temp-dir #'me.raynes.fs/temp-dir, file? #'me.raynes.fs/file?, absolute? #'me.raynes.fs/absolute?, mkdir #'me.raynes.fs/mkdir, with-mutable-cwd #'me.raynes.fs/with-mutable-cwd, exec #'me.raynes.fs/exec, link #'me.raynes.fs/link, list-dir #'me.raynes.fs/list-dir, glob #'me.raynes.fs/glob, home #'me.raynes.fs/home, name #'me.raynes.fs/name, parents #'me.raynes.fs/parents, find-files #'me.raynes.fs/find-files, exists? #'me.raynes.fs/exists?, executable? #'me.raynes.fs/executable?, chdir #'me.raynes.fs/chdir, copy-dir #'me.raynes.fs/copy-dir, rename #'me.raynes.fs/rename, temp-name #'me.raynes.fs/temp-name, *cwd #'me.raynes.fs/cwd, expand-home #'me.raynes.fs/expand-home, extension #'me.raynes.fs/extension, touch #'me.raynes.fs/touch, copy+ #'me.raynes.fs/copy+, delete-dir #'me.raynes.fs/delete-dir, size #'me.raynes.fs/size, path-ns #'me.raynes.fs/path-ns, split-ext #'me.raynes.fs/split-ext, with-cwd #'me.raynes.fs/with-cwd, hidden? #'me.raynes.fs/hidden?, temp-file #'me.raynes.fs/temp-file, normalized-path #'me.raynes.fs/normalized-path, absolute-path #'me.raynes.fs/absolute-path, unix-root #'me.raynes.fs/unix-root, iterate-dir #'me.raynes.fs/iterate-dir, base-name #'me.raynes.fs/base-name, link? #'me.raynes.fs/link?, mod-time #'me.raynes.fs/mod-time}

Sure enough, there is no "normalized" nor any "absolute".

Why do I see these functions here:

https://github.com/Raynes/fs/blob/master/src/me/raynes/fs.clj

but not in ns-publics?

I look here:

https://github.com/Raynes/fs/blob/master/project.clj

and see the version is:

me.raynes/fs "1.4.5"

but if I go here:

https://github.com/Raynes/fs

I see:

The Most Recent Release With Leiningen: [me.raynes/fs "1.4.4"]

so I upgrade to 1.4.5 and run "lein clean" and "lein uberjar" but I still get the same error:

Exception in thread "main" java.lang.RuntimeException: No such var: fs/normalized, compiling:(tma_make_thumbnails/make_images.clj:56:22)

Any suggestions?

lkrubner commented 10 years ago

Nothing? I am still confused by this issue, 5 months later.

Raynes commented 10 years ago

Can you show me your code? I unfortunately am not a psychic. :P

lkrubner commented 10 years ago

If you launch a repl session and do this:

user> (require '[me.raynes.fs :as fs])

user> (ns-publics 'me.raynes.fs)

Do you see "normalized" or "absolute"?

This is what I see:

user> (ns-publics 'me.raynes.fs) {walk #'me.raynes.fs/walk, copy #'me.raynes.fs/copy, readable? #'me.raynes.fs/readable?, create #'me.raynes.fs/create, writeable? #'me.raynes.fs/writeable?, file #'me.raynes.fs/file, split #'me.raynes.fs/split, chmod #'me.raynes.fs/chmod, find-files* #'me.raynes.fs/find-files*, mkdirs #'me.raynes.fs/mkdirs, directory? #'me.raynes.fs/directory?, delete #'me.raynes.fs/delete, tmpdir #'me.raynes.fs/tmpdir, child-of? #'me.raynes.fs/child-of?, sym-link #'me.raynes.fs/sym-link, ns-path #'me.raynes.fs/ns-path, parent #'me.raynes.fs/parent, temp-dir #'me.raynes.fs/temp-dir, file? #'me.raynes.fs/file?, absolute? #'me.raynes.fs/absolute?, mkdir #'me.raynes.fs/mkdir, with-mutable-cwd #'me.raynes.fs/with-mutable-cwd, exec #'me.raynes.fs/exec, link #'me.raynes.fs/link, list-dir #'me.raynes.fs/list-dir, glob #'me.raynes.fs/glob, home #'me.raynes.fs/home, name #'me.raynes.fs/name, parents #'me.raynes.fs/parents, find-files #'me.raynes.fs/find-files, exists? #'me.raynes.fs/exists?, executable? #'me.raynes.fs/executable?, chdir #'me.raynes.fs/chdir, copy-dir #'me.raynes.fs/copy-dir, rename #'me.raynes.fs/rename, temp-name #'me.raynes.fs/temp-name, cwd #'me.raynes.fs/cwd, expand-home #'me.raynes.fs/expand-home, extension #'me.raynes.fs/extension, touch #'me.raynes.fs/touch, copy+ #'me.raynes.fs/copy+, delete-dir #'me.raynes.fs/delete-dir, size #'me.raynes.fs/size, path-ns #'me.raynes.fs/path-ns, split-ext #'me.raynes.fs/split-ext, with-cwd #'me.raynes.fs/with-cwd, hidden? #'me.raynes.fs/hidden?, temp-file #'me.raynes.fs/temp-file, normalized-path #'me.raynes.fs/normalized-path, absolute-path #'me.raynes.fs/absolute-path, unix-root #'me.raynes.fs/unix-root, iterate-dir #'me.raynes.fs/iterate-dir, base-name #'me.raynes.fs/base-name, link? #'me.raynes.fs/link?, mod-time #'me.raynes.fs/mod-time}

I was curious where the "normalized" and "absolute" went?

lkrubner commented 10 years ago

Does anyone see "normalized" or "absolute"? I am curious if this is quirk in my own REPL environment or whether this is something that everyone is dealing with.

lkrubner commented 10 years ago

Looks like "normalized" or "absolute" were created in this commit:

https://github.com/Raynes/fs/commit/8fadbde3461ad1870468a0ee0991662d55f5f640

On Nov 15, 2013.

I am, at this point, assuming I am the only person suffering this issue? Can anyone else confirm that they have never seen the error that I am getting?

At the REPL, can others do this:

user> (ns-publics 'me.raynes.fs)

and do you see "normalized" or "absolute" in the results?

xpe commented 9 years ago

@lkrubner You are seeing correct results for the version of fs that you asked Leiningen to provide: 1.4.4.

@Raynes I think we can close this issue now.