Enigma da abordagem cliente-servidor Clojure Light Table
-
22-12-2019 - |
Pergunta
Como posso configurá-lo para poder usar o Light Table no Mac, conectado a um nREPL hospedado no Ubuntu, e criar um novo programa/project.clj?Alguém pode me ajudar a entender qual deveria ser minha abordagem e onde estou errando?
Eu tenho um servidor Ubuntu, no VirtualBox, junto com Leiningen, Pedestal e um programa de exemplo 'helloworld' de pedestal, que é exibido em um navegador.Simplesmente não consigo me conectar ao mesmo REPL que executa o programa helloworld.Não tenho acesso ou controle do lado do cliente para o objeto do lado do servidor.
Quero fazer o desenvolvimento cliente-servidor do Clojure a partir do meu host Mac LT, criando programas do lado do servidor, que posso visualizar em um REPL.
Não acho o LT intuitivo nesta área, e os conselhos que li apenas sugerem que o LT se conectará a um projeto/REPL existente.Quero criar novos objetos, a partir do cliente
Solução
Supondo que você esteja falando principalmente sobre o lado do servidor (ainda não sei muito sobre o ClojureScript), veja como você configuraria um novo projeto e codificaria interativamente em uma replicação remota.
lein new project-name
na sua VM.- Configure seu project.clj da maneira que desejar. Você deve incluir dependências!
- Inicie o REPL na sua VM e anote o número da porta
- Confirme seu código para controle de versão (git).
- Confira a mesma base de código para edição no LightTable no Mac OSX.
- Conecte-se ao REPL remoto.
- Abra core.clj ou crie um novo arquivo de namespace e comece a hackear.
- Avalie seus trechos de código ou o arquivo inteiro.
Há alguns problemas potenciais que prevejo com isso.A primeira é que sempre que você adicionar uma dependência, você precisará confirmar a alteração no controle de versão, sincronizar sua cópia de trabalho da VM, reiniciar seu REPL e reconectar o LightTable ao REPL remoto.
Segundo, você pode ter problemas à medida que o projeto ultrapassa alguns namespaces.Acredito que se o seu namespace exigir outro namespace do seu projeto, o processo REPL remoto (eu acho) tentará carregá-lo do caminho de classe local.Se a dependência não existir ou tiver mudado, não acho que o LightTable seja inteligente o suficiente para enviar os namespaces necessários pela rede.Experimente e deixe-nos saber qual é o comportamento real.