Любой способ добавить зависимость от lein-проекта без перезапуска REPL?

Теперь я открываю файл project.clj, добавляю туда зависимость, запускаю lein deps restart repl, затем use, require и т.д.

Дело в том, что мне не очень нравится перезагружать реплику, потому что время запуска медленное, и мне нужно снова перезагрузить мои файлы.

Итак, есть ли лучший способ добавить зависимость от проекта lein? без перезапуска repl?

Ответ 1

Вы можете использовать Alembic, динамический загрузчик классов и зависимостей. Хорошо, что он не загружает все зависимости граната.

Добавьте в свой .lein/profiles.clj следующее:

{:user
  {:dependencies [[alembic "0.3.2"]]}}

Затем в вашем Repl просто загрузите требуемые пути к классам, они будут вытащены из хранилищ на lein, если это необходимо:

(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.5"])

(require 'net.cgrand.enlive-html) теперь должен работать.

Ответ 2

для быстрого тестирования вы можете использовать pomegranate для добавления зависимостей на лету

=> (use '[cemerick.pomegranate :only (add-dependencies)])
nil
=> (add-dependencies :coordinates '[[incanter "1.2.3"]])

для фактического добавления зависимости, которую я обычно ударил

  • Alt-x nrepl-restart
  • ctrl-c ctrl-k, чтобы перезагрузить файл,
  • ctrl-c alt-n, чтобы вернуться в пространство имен я в буфере

Весь процесс занимает время запуска jvm (которое я согласен с болезненным касанием) плюс пять секунд. Это помогает сохранить проект в состоянии, когда загрузка файла делает все требуемое инициализацию.