Olá a todos. Peço desculpas se isso já foi abordado (não encontrei):
Desenvolver um plugin do Discourse na minha máquina local tende a ser bastante lento. Cada recarregamento do aplicativo em execução local (para visualizar as alterações de código) leva mais de 5 segundos. Então, faço uma alteração em um arquivo HTML/HBS ou JS, salvo e preciso recarregar o aplicativo [edição: atualizar o navegador], aguardando mais de 5 segundos para ver a mudança.
Existe alguma maneira de fazer o recarregamento automático (ou seja, atualização automática da visualização local) para o desenvolvimento de plugins do Discourse local?
Parece que os arquivos CSS são atualizados automaticamente, mas não os arquivos HTML/HBS ou JS.
Estou falando aqui sobre atualizar o navegador e se o hot reload está disponível para evitar ter que fazer isso. É a atualização do navegador que leva mais de 5 segundos para visualizar qualquer alteração.
Se eu tiver que parar e recarregar o servidor (no caso de alterar o plugin.rb, por exemplo), isso provavelmente leva 60 segundos.
O hot reload é, claro, o padrão para desenvolvimento com muitas tecnologias hoje (estou mais familiarizado com o Angular, que tem esse padrão) e é incrível para o desenvolvimento. Acredito que no Rails seja possível através do webpack (mas não tenho certeza sobre isso). Minha sensação é que o hot reload não está disponível para o desenvolvimento do Discourse, mas queria confirmar, porque seria incrível se estivesse disponível.
Isso parece ótimo, obrigado. Para usar isso para desenvolvimento local, há algo que eu precise fazer além de baixar a versão mais recente do Discourse do GitHub para o meu computador?
Estava animado para atualizar minha instância local do Discourse e agora estou executando a versão 2.8 localmente. No entanto, ainda não consegui fazer o hot reload funcionar para alterações em HTML e JS.
Veja como executo os comandos:
cd para a pasta do Discourse localmente
$ redis-server //inicia o servidor
$ rails s//inicia o aplicativo Rails
$ yarn//executo apenas isso na primeira vez, imagino
$ bin/ember-cli//inicia o Ember CLI. O comando ember serve --proxy "http://localhost:3000" me deu erros por algum motivo
Isso faz com que o aplicativo seja executado com sucesso em localhost:4200.
Adicionei um plugin à instância local do Discourse, que é exibido com sucesso em localhost:4200. No entanto, se fizer alterações nos arquivos HTML ou JS, essas alterações só aparecem no aplicativo rodando localmente se eu atualizar o navegador.
Preciso fazer algo mais para que o hot reload funcione?
Olá. O hot-reload está disponível com o ember-cli no Discourse? Ainda estou enfrentando o mesmo problema que mencionei em minha postagem anterior. Seguindo aquelas instruções, ainda não tenho hot-reload (ou seja, ainda preciso recarregar o navegador para ver as alterações no HTML e no JavaScript, e a saída do ember-cli no terminal não parece registrar quando salvo após uma alteração em um arquivo).
Aprecia-ria muito poder contar com o recarregamento automático (especialmente para arquivos JavaScript). Quando programo em outros contextos, onde o recarregamento automático é padrão, ele torna o processo de codificação muito mais rápido e divertido.
“O livereload.js inicia uma conexão websocket de volta para o Ember CLI. Isso permite que o Ember CLI notifique o navegador para acionar uma atualização após alterações no JavaScript ou nos estilos.”
Estou curioso sobre o motivo pelo qual o navegador ignora isso — será que é uma opção no navegador relacionada à segurança do site?
Não tenho certeza, mas com certeza consegui recarregamento automático no navegador em outros contextos e com outras frameworks. (Não sei sobre o Ember — só o usei para desenvolver coisas do Discourse.)
Tenho interesse em saber se o recarregamento automático é esperado. Parece que sim, pela discussão anterior. Nesse caso, me pergunto se a equipe do Discourse tem o recarregamento automático e se estão fazendo algo que eu não estou.
A atualização automática da página é tratada pelo ember CLI. No momento, os ativos de tema e plugin são compilados e servidos pela aplicação Rails, e não pelo ember CLI. Portanto, alterações no tema/plugin não atualizam a página automaticamente.
Isso pode ser algo que possamos melhorar no futuro. Mas por enquanto, esse é o comportamento esperado.