Olá,
Ficaria muito feliz se alguém pudesse me ajudar a entender como funciona o processo de pós-cozimento (post cooking). Estou especialmente interessado nesta parte:
Por que o processamento ocorre depois que a postagem já foi “cozida”?
Talvez possamos analisar o processo do que seria necessário para adicionar um recurso como oneboxes ou “citações de usuários específicos”, caso ainda não existissem. Então, deparei-me com o Prettytext discourse/app/assets/javascripts/pretty-text at f9608c0af5f7b1109117a5aba979acb00c28cf9a · discourse/discourse · GitHub
que lida com a conversão de e para Markdown e com a renderização da caixa de pré-visualização. Também encontrei a função rebake no modelo de postagem (post model) no backend:
que chama o método cook do postanalyzer:
essa função executa a conversão Markdown via JavaScript no backend
Minha hipótese era que isso fosse feito dessa forma para reduzir a duplicação de código, mas então descobri o
CookedPostProcessor
que linkei no início. Parece que algum processamento é feito apenas em JavaScript, enquanto parte dele é feita tanto em JavaScript quanto em Ruby no CookedPostProcessor. Para resumir: 1. É necessário ter regras de conversão de e para Markdown (parece estar apenas em JavaScript). 2. É necessário ter algum código para criar o HTML (parte em JavaScript, mas também parte em Ruby). Gostaria de saber por que o item (2) é feito parcialmente em JavaScript e parcialmente em Ruby. Talvez você possa me dar um exemplo. Também ficaria muito feliz se você pudesse corrigir quaisquer suposições equivocadas que eu tenha feito neste post.
Muito obrigado!
Spirobel
Para começar, basta verificar a aba de rede do console do JavaScript para saber o que é capturado no front-end e enviado ao servidor quando um post é criado. Isso significa que todos os dados enviados à API do Rails são processados posteriormente pelo Rails. Em seguida, na tabela posts, você verá as colunas raw e cooked, que indicam as formas não processada e processada do post.
Ok, obrigado pela sua resposta. Acredito que vou explorar isso aos poucos. Acho que talvez essa abordagem de “raciocinar a partir de princípios fundamentais” que eu adotei não funcione, pois isso surgiu por razões históricas.