Ho notato che per la personalizzazione del design è consigliato utilizzare i temi invece dei plugin. Quali sono i vantaggi?
Dal punto di vista dello sviluppo, i temi mi sembrano troppo ingombranti. Ho bisogno di un altro strumento per poter vedere le modifiche al codice in tempo reale: Theme CLI console.
Capisco anche che i temi possano essere selezionabili dall’utente (non ho bisogno di questa funzionalità).
Quali sono i vantaggi dei temi rispetto ai plugin in produzione?
Quindi, se non hai bisogno di creare route, modificare serializer o memorizzare dati personalizzati, è probabile che tu possa raggiungere il tuo obiettivo utilizzando solo un tema.
La sfida maggiore che riscontriamo con i plugin personalizzati dal punto di vista del supporto sono i tempi di inattività del sito. Questo è solitamente dovuto al fatto che il plugin interviene su una classe o un metodo di Rails nel core che è cambiato, ma il plugin non è ancora stato aggiornato per tenerne conto. Se qualcosa cambia sul lato Ember e di conseguenza rompe il tema o un componente del tema, il sito potrebbe non essere visualizzato correttamente, ma può essere disabilitato rapidamente utilizzando /safe-mode.
Capisco il tuo punto di vista. Vorrei anche aggiungere che il gem ti permette di sviluppare il tuo tema in locale e sincronizzarlo con qualsiasi sito Discourse per cui hai una chiave API, incluso theme-creator.discourse.org. Non hai nemmeno bisogno di configurare un ambiente di sviluppo locale se hai quel gem in esecuzione.
Wow, le risposte qui sono oro puro, ho ben poco da aggiungere.
L’unica cosa che ritengo importante aggiungere è che internamente a Discourse stiamo facendo passi avanti nel separare alcuni plugin in “plugin per il backend” e “tema per il frontend”. Stiamo riflettendo su questa sfida di “distribuzione” quando le cose sono mescolate in questo modo.
In generale, la mia raccomandazione estremamente forte è di ricorrere alla creazione di plugin solo se ne hai assolutamente bisogno. Quando devi modificare il backend Ruby non hai scelta. Un plugin che apporta modifiche solo al frontend è fortemente sconsigliato. È più difficile mantenerlo aggiornato e molto meno flessibile quando si tratta di utilizzo.