Aggiunta del metodo `get_like` alla classe PluginStore

Come ha detto @eviltrout, stiamo utilizzando migrazioni e tabelle dedicate in diversi plugin, con grande successo. La possibilità di imporre vincoli a livello di database ha contribuito a migliorare le prestazioni (ricerche in qualsiasi colonna) e l’integrità dei dati (grazie agli indici univoci). Questi due aspetti si sono rivelati particolarmente importanti alla scala di alcuni dei nostri clienti ospitati: non è qualcosa che avevo considerato prima di unirmi al team.

Il primo plugin significativo su cui ho lavorato è stato chat-integration, e ho implementato un “fake activerecord” piuttosto complicato, che si appoggia allo store dei plugin. A posteriori, le tabelle dedicate sarebbero state una scelta molto migliore, e potrei valutare di migrare il plugin in quella direzione in futuro.

Concordo quando si tratta di modificare le tabelle core. Aggiungere o modificare colonne su tabelle esistenti potrebbe avere conseguenze impreviste in futuro e rimarrà anche se il plugin viene disinstallato. Sconsiglio vivamente di farlo.

Le tabelle dedicate, d’altra parte, presentano un rischio piuttosto basso. Se il plugin viene disinstallato, rimarranno semplicemente senza effetti collaterali negativi (purché non vengano introdotti vincoli di chiave esterna). Lasciare dati in giro non è “peggio” rispetto all’utilizzo dello store dei plugin.

Per quanto riguarda la pulizia, potremmo valutare di fornire task rake che “annullino” le migrazioni dei plugin per effettuare la pulizia. Ma a essere onesti, non credo che verranno utilizzati molto. La mia ipotesi è che le persone raramente disinstallino i plugin e, quando lo fanno, preferiscano mantenere i dati nel caso volessero reinstallarli in futuro.