leinigen repl с профилем

Этот вопрос является продолжением Как можно ли предварительно загрузить файл clojure в leiningen repl?.

Мой ~/.lein/profiles.clj выглядит следующим образом:

{  
  :user {:source-paths ["C:/Users/username/.lein/src"] }
}

Мой ~/.lein/src/user.clj может выглядеть следующим образом:

(ns user)

(println "user file loaded")  

Когда я запускаю lein repl в папке, содержащей project.clj, выполняется файл user.clj, но когда я запускаю lein repl из другой папки, мой профиль пользователя не загружается. Есть ли обходной путь для этого или это поведение по дизайну? На самом деле я знаю, что Leinigen действительно загружает мой profile.clj (даже когда нет project.clj), потому что внутри есть и другие вещи (взято из отличного прокачай мою статью). У Leinigen просто проблемы с настройкой дополнительных исходных путей.

Еще один вопрос, связанный с этим, заключается в том, что мне нужно указать полный путь к папке для моего файла user.clj: "C:/Users/username/.lein/src". Когда я меняю это на "~/.lein/src" leiningen, мой файл не загружается.


person shaft    schedule 15.04.2014    source источник
comment
Видите ли вы что-нибудь в документации, чтобы предположить, что ~ в исходном пути должен работать? В общем, расширение тильды работает только в оболочках Linux - я бы не ожидал, что оно будет работать из Java или на платформе Windows.   -  person Alex    schedule 15.04.2014
comment
Хороший улов: заменил его на {:source-paths [~(str (System/getProperty user.home) /.lein/src)]}, и он работает. Но я все еще не могу использовать его из папки без проекта.clj внутри нее.   -  person shaft    schedule 15.04.2014


Ответы (1)


Похоже, вы просто хотите загрузить какой-то код для ваших lein repl сессий. Это делается с помощью клавиши :init клавиши :repl-options в вашем profiles.clj. Вы можете load-file другие файлы в init, если хотите упорядочить их таким образом.

{:user 
  {:repl-options 
    {:init (load-file "path-to-file/user.clj")} 
     ...}} 

Примечание. Если вы используете разделители пути в стиле Windows /, вам нужно их экранировать //.

person A. Webb    schedule 15.04.2014
comment
Спасибо, именно то, что я искал. У меня работает следующий фрагмент, включая загрузку скриптов относительно моего домашнего каталога: {:user {:repl-options {:init (load-file (str (System/getProperty user.home)) /.lein/src/user .clj))}}} - person shaft; 15.04.2014
comment
Ах, я работаю через Cygwin в Windows, как бы предположил, что вы тоже со ссылками ~/path. - person A. Webb; 15.04.2014