Creamos un pequeño plugin de acompañamiento para RSS Polling (discourse-rss-onebox): las entradas de blog importadas se renderizan como un onebox del artículo, con resúmenes de feed opcionales, descripciones de YouTube y formatos de título. Tres carencias nos obligaron a envolver métodos del núcleo en lugar de usar ganchos documentados.
-
No hay outlet de plugin en el formulario de feed. rss-polling-feed-form.gjs#L287-L351 no tiene
PluginOutlet, y el contrato de actualización acepta un conjunto fijo de atributos (update.rb#L9-L14). Un plugin no puede añadir una opción por feed, por lo que el nuestro necesitó una página de administración separada. Un outlet junto con una forma de persistir campos adicionales (por ejemplo, campos personalizados de feed) lo cubriría. -
El ID del feed nunca llega a la importación. El trabajo de sondeo conoce
rss_feed_id, peroTopicEmbed.import(poll_feed.rb#L110) y el modificadortopic_embed_import_create_args(topic_embed.rb#L108) nunca lo reciben. Envolver el trabajo de sondeo para capturarlo. Pasar el ID como opción permitiría a los plugins actuar por feed. -
No hay gancho en la ruta de actualización. Cuando el contenido de un elemento del feed cambia,
TopicEmbed.importrevisa la publicación con el contenido del feed (topic_embed.rb#L147-L152), omitiendo lo que hizo el modificador de creación. Un blogger que edite una publicación convierte silenciosamente un tema con forma de plugin de nuevo en texto de feed. Un modificador en los cambios de actualización, que imite atopic_embed_import_create_args, cerraría esta brecha.
La solución temporal para los puntos 2 y 3 es añadir TopicEmbed.import y el trabajo de sondeo al principio. Esto es frágil: main ha añadido desde entonces una palabra clave truncate: a TopicEmbed.import, lo que rompe cualquier envoltura que imite la firma de 2026.7; tuvimos que lanzar una versión solo para pasarla. Los ganchos documentados evitarían ese tipo de roturas.