Adicionando um método `get_like` à classe PluginStore

Como @eviltrout já disse, estamos usando migrações e tabelas dedicadas em vários plugins agora, com grande sucesso. A capacidade de impor restrições de banco de dados ajudou a melhorar o desempenho (pesquisas em qualquer coluna) e a integridade dos dados (por meio de índices exclusivos). Essas duas coisas provaram ser especialmente importantes na escala de alguns de nossos clientes hospedados — algo que eu realmente não considerei antes de entrar para a equipe.

O primeiro plugin substancial em que trabalhei foi o chat-integration, e implementei um “fake activerecord” muito complicado, que se apoia no armazenamento de plugins. Em retrospecto, tabelas dedicadas teriam sido uma escolha muito melhor, e posso considerar migrar o plugin para isso no futuro.

Concordo, quando se trata de modificar tabelas principais. Adicionar ou modificar colunas em tabelas existentes pode ter consequências não intencionais mais tarde e permanecerá mesmo se o plugin for desinstalado. Recomendo fortemente não fazer isso.

Tabelas dedicadas, por outro lado, apresentam risco relativamente baixo. Se o plugin for desinstalado, elas simplesmente permanecerão, sem quaisquer efeitos colaterais negativos (desde que você não introduza restrições de chave estrangeira). Deixar dados espalhados não é “pior” do que usar o armazenamento de plugins.

Em termos de limpeza, poderíamos considerar fornecer tarefas rake que “revertam” as migrações de plugins para limpeza. Mas, para ser honesto, não acho que isso será muito utilizado. Minha suposição é que as pessoas raramente desinstalam plugins e, quando o fazem, preferem manter os dados caso queiram reinstalá-los novamente.