Sono in grado di svolgere i compiti che desidero utilizzando la console Rails. Tuttavia, questi compiti devono essere eseguiti periodicamente e non voglio digitare ogni comando uno per uno nella console Rails. Come posso eseguire uno script Ruby sulla mia istanza Discourse self-hosted?
Inoltre, lo script leggerà un file CSV, dove dovrei mettere questo file CSV in modo che sia ancora accessibile all’interno del container Docker e non scompaia dopo gli aggiornamenti?
hai affermato di volere “che le attività vengano eseguite periodicamente”.
se questo è “per tutta la vita della community”, allora vale la pena scrivere un tuo plugin per farlo. Non è molto più difficile che entrare nella console di Rails (disordinato e più rischioso!).
Ti permetterà inoltre di archiviare il codice, gestirlo correttamente e migliorarlo nel tempo.
In alternativa, potresti definire un’attività rake, ma dovrai archiviarla da qualche parte, potenzialmente anche in un plugin!
Sì, è stata una scelta di parole infelice. Quello che intendevo era il seguente: ho bisogno di eseguire questo job più volte nel corso della vita della community. Tuttavia, non c’è un periodo fisso e quando deve essere eseguito è determinato da un qualche evento esterno. Quindi eseguirò il task da solo più volte senza alcun intervallo di tempo regolare tra un’esecuzione e l’altra.
Quindi un’attività rake potrebbe essere la tua soluzione ideale. È appositamente progettata per l’esecuzione di script ad hoc. La inserirei comunque in un plugin, poiché puoi gestirla bene su GitHub e non dimenticheresti mai dove l’hai messa o la cancelleresti accidentalmente.
Potresti renderlo un rake task o inserirlo in un job che dovresti avviare manualmente da /sidekiq
Puoi caricare il tuo csv dall’UX e passarlo con un valore di impostazione come suggerito, oppure caricarlo in un topic e far sì che il tuo script ottenga il post/upload più recente nel topic, oppure caricarlo in /var/discourse/shared/standalone/xxx.csv e accedervi come /shared/xxx.csv nello script. O forse dovresti fare tutto con l’API invece di caricare un file csv.
Non descrivi cosa stai cercando di fare, solo la tua soluzione che potrebbe non essere la migliore.