Любой способ добавить зависимость от 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 (которое я согласен с болезненным касанием) плюс пять секунд. Это помогает сохранить проект в состоянии, когда загрузка файла делает все требуемое инициализацию.