Wir haben ein kleines Companion-Plugin für das RSS-Polling entwickelt (discourse-rss-onebox): Importierte Blogartikel werden als Onebox des Artikels gerendert, mit optionalen Feed-Zusammenfassungen, YouTube-Beschreibungen und Titelformaten. Drei Lücken zwangen uns dazu, Kernmethoden zu kapseln, anstatt die dokumentierten Hooks zu verwenden.
-
Kein Plugin-Ausgang im Feed-Formular. rss-polling-feed-form.gjs#L287-L351 enthält kein
PluginOutlet, und der Update-Vertrag akzeptiert einen festen Satz von Attributen (update.rb#L9-L14). Ein Plugin kann keine Feed-spezifische Option hinzufügen, daher benötigte unseres eine separate Admin-Seite. Ein Ausgang plus eine Möglichkeit, zusätzliche Felder zu persistieren (z. B. Feed-Custom-Fields), würde dies abdecken. -
Die Feed-ID erreicht den Import nie. Der Poll-Job kennt die
rss_feed_id, aberTopicEmbed.import(poll_feed.rb#L110) und dertopic_embed_import_create_args-Modifier (topic_embed.rb#L108) erhalten sie nie. Wir kapseln den Poll-Job, um sie zu erfassen. Wenn sie als Option durchgereicht würde, könnten Plugins feed-spezifisch handeln. -
Kein Hook auf dem Update-Pfad. Wenn sich der Inhalt eines Feed-Elements ändert, revidiert
TopicEmbed.importden Beitrag mit dem Feed-Inhalt (topic_embed.rb#L147-L152) und umgeht dabei alles, was der Create-Modifier getan hat. Ein Blogger, der einen Beitrag bearbeitet, verwandelt ein vom Plugin formatiertes Thema stillschweigend wieder in Feed-Text. Ein Modifier für die Update-Änderungen, dertopic_embed_import_create_argsspiegelt, würde dies schließen.
Die Workarounds für 2 und 3 bestehen darin, TopicEmbed.import und den Poll-Job voranzustellen (Prepend). Das ist brüchig: main hat seitdem ein truncate:-Schlüsselwort zu TopicEmbed.import hinzugefügt, was jede Kapselung bricht, die die Signatur von 2026.7 spiegelt – wir mussten ein Release veröffentlichen, nur um es durchzureichen. Dokumentierte Hooks würden diese Art von Brüchen vermeiden.