Hola,
Me alegraría mucho si alguien pudiera ayudarme a entender cómo funciona el proceso de post-cocción. En particular, me interesa esta parte:
¿Por qué el procesamiento posterior ocurre después de que la publicación ya ha sido “cocinada”?
Quizás podríamos repasar el proceso de lo que se necesitaría hacer para añadir una función como oneboxes o “citas de usuarios específicos” si aún no existieran. Así que me topé con Prettytext discourse/app/assets/javascripts/pretty-text at f9608c0af5f7b1109117a5aba979acb00c28cf9a · discourse/discourse · GitHub
que maneja la conversión de y hacia Markdown y el renderizado de la caja de vista previa. También encontré la función rebake en el modelo de publicación en el backend:
que llama al método cook del PostAnalyzer:
esta función ejecuta la conversión de Markdown en JavaScript en el backend
Mi idea era que se hace así para evitar duplicación de código, pero luego descubrí el
CookedPostProcessor
al que enlacé al principio. Parece que algunos procesos se realizan solo en JavaScript, mientras que otros se hacen tanto en JavaScript como en Ruby dentro del CookedPostProcessor. Para resumir: 1. Necesitas tener reglas de conversión de y hacia Markdown (parece que están solo en JavaScript) 2. Necesitas tener código para generar el HTML (algunas partes en JavaScript, pero otras también en Ruby). Me gustaría saber por qué el punto (2) se realiza parcialmente en JavaScript y parcialmente en Ruby. ¿Podrías darme un ejemplo? También me encantaría que corrigieras cualquier suposición errónea que haya hecho en este mensaje.
¡Muchísimas gracias!
Spirobel
Para empezar, simplemente abre la pestaña Network de la consola de JavaScript para ver qué se captura en el frontend y se envía al servidor al crear una publicación. Esto significa que todos los datos enviados a la API de Rails son procesados posteriormente por Rails. Luego, en la tabla posts, verás las columnas raw y cooked, que indican las formas sin procesar y procesada de la publicación.
Vale, gracias por tu respuesta. Creo que simplemente exploraré esto pieza por pieza. Pienso que quizás este enfoque de “razonar a partir de primeros principios” que adopté no funciona porque esto surgió por razones históricas.