Limpa-Plugin

:information_source: Resumo Varre, audita e limpa com segurança resíduos de banco de dados órfãos deixados por plugins desinstalados.
:hammer_and_wrench: Link do Repositório GitHub - canbekcan/discourse-plugin-cleaner · GitHub
:open_book: Guia de Instalação Como instalar plugins no Discourse
:computer: Codificação Vibe Coding - Gemini

![Screenshot 2026-03-29 at 04.57.52|690x404](upload://8sCSzrLcoN2qM3GO7zgz0Vz8f1w.png)

Recursos

Ao desinstalar um plugin do Discourse, ele frequentemente deixa dados ocultos em seu banco de dados. Com o tempo, esse “resíduo” pode poluir seu banco de dados e complicar a manutenção do site. Discourse Plugin Cleaner é uma ferramenta administrativa abrangente projetada para identificar e remover com segurança esses dados órfãos.

Principais recursos incluem:

  • Varredura Profunda: Varre várias tabelas do banco de dados, incluindo Campos Personalizados (Usuário, Tópico, Postagem, Categoria, Grupo), Configurações de Plugin, Temas, Distintivos, Chaves de API, Webhooks, Grupos de Tags e Uploads.
  • Modo de Auditoria Seguro (Zero Exclusão Automática): O plugin funciona estritamente como uma ferramenta de auditoria até que você tome uma ação. Ele nunca excluirá dados automaticamente. Você deve selecionar e confirmar manualmente os itens que deseja remover.
  • Avaliação de Risco: Atribui automaticamente um “Nível de Risco” (Crítico, Alto, Médio, Baixo, OK) aos itens detectados para ajudar os administradores a tomar decisões informadas sobre o que é seguro excluir.
  • Rastreamento de Histórico de Versões: Cria instantâneos dos seus plugins instalados na inicialização. Se um plugin for removido, ele registra a mudança de estado, criando um registro histórico do que foi desinstalado e quando.
  • Interface Administrativa Moderna: Fornece um painel elegante e intuitivo construído com componentes do modo estrito do Ember para integração perfeita na interface administrativa do Discourse.

Configuração

O plugin funciona imediatamente com configurações padrão sensatas. Para usar o plugin:

  1. Acesse o Painel: Navegue até o painel administrativo do seu Discourse. Na barra lateral, na seção Plugins, clique em Plugin Cleaner.
  2. Execute uma Varredura: Clique no botão “Run Deep Scan” (Executar Varredura Profunda). O sistema consultará seu banco de dados e gerará um relatório em tempo real de todos os dados órfãos encontrados.
  3. Revise os Problemas: Navegue pelas abas categorizadas (Campos Personalizados, Configurações de Plugin, etc.). Preste muita atenção às colunas Risco e Status.
  4. Selecione e Limpe: Marque as caixas ao lado dos itens órfãos que deseja remover.
  5. Confirme a Exclusão: Clique em “Delete Selected” (Excluir Selecionados). Você será solicitado com um aviso de confirmação final antes que os dados sejam permanentemente apagados. Todas as exclusões são registradas automaticamente nos Logs de Ação da Equipe do Discourse para auditoria de segurança.

(Nota para Uploads: Se uploads órfãos forem encontrados, o plugin instruirá você a executar rake uploads:clean no console do seu servidor para recuperar fisicamente o espaço em disco).

Configurações

Você pode personalizar a rigidez do scanner através das configurações do seu site.

Nome Descrição
plugin_cleaner_orphan_threshold O número máximo de registros que um campo personalizado pode ter para ser considerado “órfão”. Se um campo personalizado tiver menos registros que esse limite, ele será marcado para revisão. (Padrão: 5, Mínimo: 1, Máximo: 100)
plugin_cleaner_stale_api_key_days O número de dias que uma chave de API deve ficar sem uso antes que o scanner a marque como obsoleta/órfã. (Padrão: 90 dias, Mínimo: 7, Máximo: 365)
plugin_cleaner_stale_upload_days O número de dias que um upload desvinculado pode existir antes de ser marcado como órfão. (Padrão: 30 dias, Mínimo: 1, Máximo: 365)

(Nota: Este é o projeto para entender como os plugins do Discourse funcionam)

2 curtidas

Muitos bons plugins criam e gerenciam suas próprias tabelas. Analisando seu código, não tenho certeza se você já levou isso em consideração?

Seu desafio é que, ao remover o plugin, a migração desaparece.