Como faço alterações em app/views/layouts/?

Pergunta rápida e simples:

Com certeza, estou perdendo algumas células cerebrais!

Fizemos algumas edições no contêiner do aplicativo em um dos arquivos do diretório /var/www/discourse/app/views/layouts.

Depois, pensamos (como idiotas) que poderíamos apenas reconstruir o contêiner com /var/discourse/launcher rebuild app (não!), mas toda vez que fazemos isso, nossas edições são sobrescritas.

Não queremos fazer um fork do Discourse; mas gostaríamos de reconstruir o aplicativo usando o launcher sem que ele sobrescreva nossas edições locais.

Alguém pode nos dizer como fazer isso?

Obrigado!

Parece que descobrimos por que tudo o que tentamos resultou na sobrescrita de nossos arquivos no aplicativo durante o processo de reconstrução:

O motivo parece ser que o launcher puxa a imagem base do Discourse e essa imagem possui um diretório .git e o arquivo de configuração do git aponta naturalmente para o repositório principal do Discourse, sobrescrevendo então nossas alterações:

launcher

pull_image() {
  # Adiciona uma única nova tentativa para contornar erros TLS do Docker Hub
  $docker_path pull $image || $docker_path pull $image
}

Antes, equivocadamente, pensávamos que o launcher construía a imagem (como não percebemos isso?!) e agora está claro que ele puxa uma imagem base do Docker Hub.

De volta à prancheta!

Existe alguma flag que possamos definir para impedir que o launcher puxe a imagem base e, em vez disso, a construa?

Olá @DBHacker

Parece que o que você pode querer fazer é:

  1. fazer alterações no contêiner base (como você mencionou)
  2. marcar e salvar essa imagem e
  3. enviar essa imagem para seu próprio repositório de imagens Docker
  4. editar o launcher para docker pull essa imagem base modificada do seu repositório

Espero que isso ajude de alguma pequena forma?

De qualquer forma, isso não é suportado pela meta (pelo menos, eu acho), então você está por conta própria.

Feliz hacking! :slight_smile:

Nota: Eu não tentei isso… mas parece que você está se divertindo! :slight_smile:

1 curtida

Você precisa fazer essas alterações em um plugin ou em um componente de tema.

6 curtidas

Olá @pfaffman

Concordo totalmente com você: plugins e componentes de tema são o caminho a seguir! Esse método é totalmente suportado e ajuda a manter a sincronia com a equipe de desenvolvimento do Meta.

Também é bom ser curioso, explorar possibilidades e alcançar um nível mais profundo de compreensão do Discourse. Após ler este tópico ontem, criei um registro Docker local, marquei a imagem base do Discourse localmente, enviei essa imagem para meu novo registro Docker (localhost) e, em seguida, recriei um aplicativo Discourse puxando a imagem base do registro do Discourse.

É divertido, na minha opinião, experimentar e aprender mais sobre o Discourse, e aprendi muito com essa exploração/experimento de administração de sistemas. Claro, não é assim que rodaríamos uma aplicação em produção, mas aprendi bastante ao passar pelos passos necessários para puxar a imagem base do Discourse do localhost em vez de remotamente, e foi surpreendentemente fácil fazer isso. Por isso, escrevi sobre esse experimento para compartilhar com outros administradores de sistemas curiosos:

Espero que outros exploradores da área de administração de sistemas se beneficiem desse experimento de alguma forma, mesmo que pequena.

Mantenha a curiosidade!

1 curtida

Há uma maneira super simples de implementar isso sem se preocupar com imagens ou criar um plugin. Desde que você esteja apenas modificando arquivos planos existentes, pode alterá-los a partir do app.yml.

Procure por hooks e pups. Vários outros guias já utilizam essa abordagem.

5 curtidas

Obrigado @neounix

Eu também gosto de aprender e tentar coisas novas.

Um dia, quando tiver tempo, vou tentar aprender mais sobre Docker e registros locais.

Por enquanto, vou me ater ao desenvolvimento de plugins, já que é suportado pelo Discourse e se encaixa no modelo de desenvolvimento do Discourse.

Como você disse, aprender essas coisas é divertido, mas também é bom permanecer no mainstream!

:slight_smile:

2 curtidas

Concordo.

Mesmo após experimentar o registro Docker local e a imagem base local do Discourse, não consegui obter resultados consistentes (não sei ao certo o motivo, deve estar faltando algum detalhe crucial na configuração).

Por outro lado, aprendi mais sobre registros Docker locais e como construir e gerenciá-los.

Apenas um experimento lateral com o Docker… com certeza aprendi muito!

1 curtida

Sim, parece que a única opção viável é um plugin.

Obrigado a todos pelas respostas e ajuda.

2 curtidas

Que tipo de alterações de arquivo você está fazendo?

1 curtida