Загадка клиент-серверного подхода Clojure Light Table

Как я могу настроить его так, чтобы я мог использовать Light Table на Mac, подключенный к nREPL, размещенному в Ubuntu, и создать новую программу /project.clj? Кто-нибудь может помочь мне понять, каким должен быть мой подход и куда я иду не так?

У меня есть сервер Ubuntu в VirtualBox вместе с Leiningen, Pedestal и примером программы helloworld, которая отображается в браузере. Я просто не могу подключиться к тому же REPL, который запускает программу helloworld. У меня нет доступа со стороны клиента или контроля над объектом на стороне сервера.

Я хочу заняться разработкой клиент-сервер Clojure с моего компьютера Mac с LT, создавая серверные программы, которые я могу просмотреть в REPL.

Я не считаю, что LT интуитивно понятен в этой области, и совет, который я прочитал, предполагает, что LT подключится к существующему проекту /REPL. Я хочу создавать новые объекты от клиента

1 ответ

Решение

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

  1. lein new project-name в вашей виртуальной машине.
  2. Настройте свой project.clj так, как вы этого хотите. Вы должны включить зависимости!
  3. Запустите REPL на своей виртуальной машине и запишите номер порта
  4. Зафиксируйте ваш код для контроля версий (git).
  5. Оформите ту же кодовую базу для редактирования в LightTable в Mac OSX.
  6. Подключите к удаленному REPL.
  7. Откройте core.clj или создайте новый файл пространства имен и начните взлом.
  8. Оцените ваши фрагменты кода или весь файл.

Есть несколько потенциальных проблем, которые я предвижу с этим. Во-первых, всякий раз, когда вы добавляете зависимость, вам нужно будет зафиксировать изменение в управлении версиями, синхронизировать вашу рабочую копию виртуальной машины, перезапустить ваш REPL и повторно подключить LightTable к удаленному REPL.

Во-вторых, у вас могут возникнуть проблемы, поскольку проект выходит за рамки нескольких пространств имен. Я считаю, что если вашему пространству имен требуется другое пространство имен из вашего проекта, удаленный процесс REPL попытается (я думаю) попытаться загрузить его из своего локального пути к классам. Если зависимость отсутствует или изменилась, я не думаю, что LightTable достаточно умен, чтобы передавать необходимые пространства имен по проводам. Попробуйте и дайте нам знать, каково реальное поведение.

Другие вопросы по тегам