Plugin causando errores durante la reconstrucción

Lo que sucede aquí es lo siguiente:

  1. Algunas personas tienen una versión muy antigua del plugin de preguntas y respuestas con mi nombre de usuario personal de GitHub en la URL del repositorio en su archivo app.yml.

  2. Hace años transferí el plugin QnA a paviliondev. Github redirige las URL de los repositorios cuando se transfieren, por lo que las URL antiguas con mi nombre de usuario personal siguieron funcionando.

  3. Años después, Pavilion transfirió el Plugin de Preguntas y Respuestas a Discourse. Discourse inicialmente mantuvo el nombre discourse-question-answer.

  4. Hace unos meses creé mi propia bifurcación (fork) del plugin alojado en discourse, mientras todavía se llamaba discourse-question-answer.

  5. Las personas con enlaces muy antiguos al plugin QnA con mi cuenta personal de GitHub ahora estaban clonando mi nueva bifurcación del discourse-question-answer significativamente actualizado alojado en discourse. En otras palabras, un enlace muy antiguo ahora apuntaba a una bifurcación de un nuevo plugin. A pesar de los años transcurridos, debería haberlo previsto, así que disculpas por ello. He eliminado esa bifurcación.

  6. Discourse cambió el nombre de discourse-question-answer a discourse-upvotes. Este cambio de nombre no ha tenido un impacto material en su caso @Jaap-Jan_Swijnenburg, pero es la razón por la que ahora está clonando (inesperadamente) una bifurcación de ese repositorio.

  7. Una migración en discourse/discourse-upvotes (anteriormente discourse-question-answer) asume que la columna value en post_custom_fields es segura para JSON.

  8. Los datos antiguos creados por el plugin cuando era angusmcleod/discourse-question-answer (hace años) no se guardaron como JSON válido por la preocupación HasCustomFields en discourse/discourse. Supongo, pero es probable que estos datos se agregaran antes de que se agregara la verificación de tipo JSON hace 4 años (todavía es posible terminar con JSON no válido en campos personalizados registrados como JSON en casos extremos).

Por lo tanto:

  1. Cuando las personas con la URL (obsoleta desde hace años) angusmcleod/discourse-question-answer en su app.yml actualizan su Discourse, se clona la migración en la nueva versión del plugin, se ejecuta la migración y potencialmente se crea este error.

Hay algunas soluciones para esto:

  1. @Jaap-Jan_Swijnenburg en su caso, solo necesita eliminar la referencia a mi antiguo plugin QnA y podrá reconstruir su sitio. Eso es todo; nada más. Parece que eso es lo que ha hecho :+1:

  2. La migración del plugin discourse/discourse-upvotes (anteriormente discourse-question-answer) podría actualizarse para manejar valores no JSON en la columna value en post_custom_fields.

Observaría que la opción 2 también manejaría el caso adicional de personas que realmente desean cambiar de una versión antigua del plugin QnA a discourse-upvotes. En ese caso, la migración se ejecutará y fallará si alguna entrada en la columna value de post_custom_fields no es JSON válido.

5 Me gusta