Problemas para entender o desenvolvimento do Discourse

Olá a todos.
Tenho um Discourse instalado no meu computador local em

http://localhost:4200/

conforme este guia. Aqui, desenvolvo o Discourse, temas e plugins.
Também tenho um Discourse instalado em uma máquina virtual usando Docker, conforme este guia.
Essas instalações funcionam maravilhosamente.

Não entendo o que é Docker e por que os arquivos na máquina virtual são diferentes dos arquivos no computador local.

O que acontecerá se você parar o Docker na máquina virtual usando o comando d/shutdown_dev?

Como posso sincronizar essas duas instalações usando o Git?

Posso instalar o Docker em uma máquina local e para quê?

Por favor, ajudem-me a entender essas questões.

Vou tentar ilustrar o fluxo:

  1. Trabalhe no seu código (dentro de /discourse).
  2. Compile seu código em um Container Docker.
  3. Implante esse Container Docker no seu servidor de produção.

Um caso de uso para executar o Docker localmente é testar seu novo Container Docker compilado antes de implantá-lo no servidor de produção.

1 curtida

A presença ou não do Docker é praticamente irrelevante para o desenvolvimento da maioria dos componentes de plugins e temas. Isso é uma preocupação separada. Eu não executo uma instância do Docker em desenvolvimento.

Ao desenvolver complementos para o Discourse, você não deve se preocupar excessivamente com a versão exata ou a configuração da sua instância de desenvolvimento em comparação com a de produção, pois, na maioria dos casos, você não tem controle sobre a maioria das instâncias onde seu plugin acabará sendo usado, especialmente se for de código aberto. O mais importante é seguir boas práticas para tornar seu complemento mais robusto a mudanças no núcleo do Discourse. Mesmo que você esteja desenvolvendo apenas para sua própria instância do Discourse, você ainda não tem controle sobre as alterações no núcleo, então a mesma abordagem se aplica.

Versões ligeiramente diferentes geralmente NÃO devem fazer com que seu plugin ou componente de tema falhe. Pode acontecer, mas não é consistente. Meus plugins e componentes de tema podem ficar meses sem precisar de alterações, mesmo trabalhando em commits do núcleo com meses de diferença.

Normalmente, atualizo minha instância de desenvolvimento para a versão mais recente do master quando estou trabalhando em alterações de plugin (correções ou melhorias), para que eu possa resolver qualquer alteração que quebre funcionalidades. Isso é simplesmente feito com um git pull, bundle install e db:migrate.

As instâncias de produção devem ser atualizadas apenas através da interface gráfica ou pelo comando de rebuild na linha de comando.

Meu conselho é colocar um plugin disponível publicamente, atrair usuários e aprender com os desafios da experiência. Não procrastine demais: faça! E não se preocupe em cometer erros, pois eles ajudam você a aprender.

6 curtidas

Muito obrigado pela sua resposta.
Vou tentar desenvolver.
Ou seja, posso remover “git clone /github…docker” do arquivo app.yaml?
E reconstruí-lo?

Eu faria essas perguntas no tópico de desenvolvimento do Docker. Por enquanto, eu não alteraria os scripts padrão usados para manter o ambiente de desenvolvimento do Docker, a menos que tenha um motivo muito bom; presumivelmente, eles estão aí para te ajudar.

1 curtida

Eu entendo você. Obrigado.

1 curtida