Я создал проект, используя Luminus, с помощью следующей команды:
lein new luminus myapp +mysql +kee-frame +swagger +oauth +kibit
В этом проекте я создал вызов API, который вызывает функцию для чтения файла с диска. Вызов API (частично):
{:get {:summary "Returns a file from disk to show in GUI"
:responses {200 {:body ::val/my-file}}
:handler (constantly
{:status 200
:body (gui/get-file)})}}
Функция get-file находится в пространстве имен myapp.db. gui и имеет вид:
(defn get-file
[]
(log/info "Trying to retrieve file")
(read-string (slurp "file.edn")))
Когда я запустите REPL и введите команду (mount/start)
приложение запускается нормально, и я могу сделать вызов API, чтобы увидеть содержимое файла. Расположение файла теперь в root моего проекта. Однако, если я помещаю файл в resources / myapp и изменяю команду slurp на (slurp "myapp/file.edn")
или (slurp "resources/myapp/file.edn")
, я получаю ошибку после запуска (mount/start)
, и приложение не запускается. Я получаю ту же ошибку, если пытаюсь прочитать файл с абсолютным путем, например (slurp "C:\\Development\\file.edn")
2020-04-30 12:02:03,512 [nREPL-session-88d31cf8-b119-4a87-901d-3eee1eb61cc7] INFO myapp.env --=[myapp started successfully using the development profile]=-
2020-04-30 12:02:03,607 [nREPL-session-88d31cf8-b119-4a87-901d-3eee1eb61cc7] INFO myapp.db.gui-related - Trying to retrieve file
Execution error (ConnectException) at java.net.DualStackPlainSocketImpl/connect0 (DualStackPlainSocketImpl.java:-2).
Connection refused: connect
. В этом проекте у меня будет много файлов 'config' для чтения, и я хотел бы быть в состоянии поместить их в одну или несколько подпапок в root моего проекта. Помимо этого будет еще один файл для чтения, который будет находиться вне структуры папок моего приложения.
Как я могу прочитать эти файлы?