Criamos um pequeno plugin complementar para o RSS Polling (discourse-rss-onebox): posts de blog importados são renderizados como um onebox do artigo, com resumos de feed opcionais, descrições do YouTube e formatos de título. Três lacunas nos forçaram a envolver (wrap) métodos do núcleo em vez de usar ganchos (hooks) documentados.
-
Nenhuma saída de plugin (plugin outlet) no formulário de feed. O arquivo rss-polling-feed-form.gjs#L287-L351 não possui um
PluginOutlet, e o contrato de atualização aceita um conjunto fixo de atributos (update.rb#L9-L14). Um plugin não pode adicionar uma opção por feed, por isso o nosso precisou de uma página de administração separada. Uma saída de plugin, juntamente com uma maneira de persistir campos extras (como campos personalizados de feed, por exemplo), resolveria isso. -
O ID do feed nunca chega à importação. O trabalho de verificação (poll job) conhece o
rss_feed_id, mas oTopicEmbed.import(poll_feed.rb#L110) e o modificadortopic_embed_import_create_args(topic_embed.rb#L108) nunca o recebem. Nós envolvemos o trabalho de verificação para capturá-lo. Passá-lo como uma opção permitiria que os plugins agissem por feed. -
Nenhum gancho no caminho de atualização. Quando o conteúdo de um item do feed muda, o
TopicEmbed.importrevisa a publicação com o conteúdo do feed (topic_embed.rb#L147-L152), ignorando o que o modificador de criação fez. Um blogueiro editando um post transforma silenciosamente um tópico formatado por plugin de volta em texto de feed. Um modificador nas mudanças de atualização, espelhando otopic_embed_import_create_args, resolveria isso.
A solução temporária para os itens 2 e 3 é adicionar (prepend) o TopicEmbed.import e o trabalho de verificação. Isso é frágil: o main adicionou desde então uma palavra-chave truncate: ao TopicEmbed.import, o que quebra qualquer wrapper que espelhe a assinatura de 2026.7 — tivemos que lançar uma versão apenas para passá-la adiante. Ganchos documentados evitariam esse tipo de quebra.