Domanda

Esiste comunque la possibilità di impostare una semplice pianificazione delle attività all'interno di un'app Rails?Ci sono pezzi di codice che voglio eseguire ogni ora, ogni giorno o ogni settimana.Non voglio suddividerli in script separati che poi devo pianificare tramite processi cron.Se lo facessi, dovrei ricordarmi di eseguire il backup degli script e, se ricompilo un server, devo aggiungere nuovamente tutti i lavori cron, sembra solo un po' confuso per quello che mi serve.

Vorrei poter semplicemente programmare i lavori da qualche parte nella mia app Rails e farli eseguire magicamente quando voglio!Qualche idea?

È stato utile?

Soluzione

Non ci sono gemme / plugin per questo, come Rufus-scheduler o il più popolare 'ogni volta' gioiello. Mi piace la soluzione @douglassellers', però, non avevo sentito su di esso.

Altri suggerimenti

Io uso lavoro ritardato, una "coda di priorità sostenuta asincrona del database" per realizzare qualcosa di simile. Dai un'occhiata alla http://github.com/tobi/delayed_job

Sarà ancora bisogno di avere qualcosa che prende il via 'posti di lavoro rastrello: il lavoro', ma è meglio che avere un sacco di diversi posti di lavoro cron. Avviso nella documentazione:. Dell'attributo run_at - che sembra che potrebbe risolvere il "schema AI lavori da qualche parte nel mio rotaie app e li hanno magicamente correre quando li voglio" problema

Puoi usare qualcosa come Rails Cron (gem install rails_cron) per fare questo, che crea un altro processo rails dedicato all'esecuzione di attività in background pianificate.Consiglierei di non farlo in questo modo, poiché l'istanza dei binari aggiuntivi dovrà essere monitorata, arrestata e avviata insieme al resto dell'app e, secondo la mia esperienza, è molto incline a cadere.

Una soluzione migliore è usare semplicemente Craken, http://github.com/latimes/craken, per gestire i crontab tramite file yaml nella tua app rails.Ogni attività pianificata viene definita in un file yaml e quindi al momento della distribuzione Craken decide se il file CronTab a livello di sistema deve essere aggiornato o meno.Si collega direttamente al file di distribuzione capistrano ed è ragionevolmente chiavi in ​​mano.Ciò offre il vantaggio di continuare a gestire le attività pianificate nell'app rails mentre le esegui effettivamente con il cron a livello di sistema operativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top