Ho bisogno di poter eseguire attività personalizzate su un forum Discourse. Esiste un modo per caricare i task Rake definiti in un plugin in modo che possano essere utilizzati in produzione?
Credo che questo dovrebbe funzionare. Basta inserirli nella stessa directory del plugin in cui risiedono nel core.
In passato ho fatto questo creando un task Rake che viene eseguito dopo un altro, ma non ho mai creato un task autonomo.
Sì, funziona. All’inizio sembrava non funzionare per me, ecco perché ho fatto la domanda, ma l’ho provato di nuovo e ha funzionato al primo tentativo.
Ho aggiunto il mio task rake in lib/tasks nel mio plugin. Volevo confermare che funzioni anche per chiunque altro si imbatta in questa situazione.
Qualcuno ha mai riscontrato che i task Rake in lib/tasks vengano eseguiti due volte? Nel nostro caso, rake subscriptions:procourse_convert sembra eseguirli due volte.
Ciao @kimardenmiller, hai mai trovato una risposta sul motivo per cui il tuo task rake viene eseguito due volte?
Penso che possa aver avuto a che fare con la dichiarazione dello stesso metodo in due punti diversi, il che, a mio avviso, ne ha causato l’esecuzione due volte. Non verificato, ma controlla questo aspetto.
MODIFICA: Penso di aver capito come succede.
Non segue molto la convenzione, o forse troppo.
Il problema è se si fa riferimento al file rake in plugin.rb, sembra che venga eseguito due volte, ma il task rake è incluso anche se non lo si fa riferimento, quindi non è necessario caricarlo durante l’inizializzazione.
Per quanto ne so, non c’è alcuna logica specifica di discourse qui. La mia ipotesi è che i file di task vengano caricati automaticamente se hai definito un ::Rails::Engine per il tuo plugin?