Salve a tutti, sto cominciando da poco (dopo un periodo di Tomcat/JSP)
ad avvicinarmi a Ruby on Rails, trovandolo (almeno finora) eccezionale.
Avrei una domanda da porvi sperando di riuscire a spiegare il mio
problema.
Supponiamo di avere un’applicazione che gestisca degli utenti che vi
accedono con un classico sistema di login. Ora, io avrei la necessità di
compiere delle operazioni sul database anche quando tali utenti non sono
connessi.
Esempio: non so se conoscete uno di quei browser game tanto in voga
negli ultimi tempi, tipo Travian o Ogame, in cui i giocatori hanno delle
risorse che continuano a crescere ad intervalli stabiliti anche quando
non collegati al gioco.
Bene, com’è possibile gestire tutto questo?
L’unica cosa che riesco a fare per il momento è parlare con un database
ma quando l’utente è connesso. Come far sì, dunque, che Apache (o chi
per lui) continui ad eseguire qualcosa dopo il logout?
puoi scriverlo tu in modo piuttosto semplice in pure ruby. caricando il
file
di boot e di environment di rails ti darà accesso a tutti i models e
librerie della tua applicazione rails
Devi avere un motore del gioco che gira in background.
E questo motore è possibile scriverlo con ruby e runnarlo su apache?
Puoi scrivere in ruby uno script che fa “avanzare” lo stato del gioco
di uno scatto. Poi lo invochi ogni 5 minuti. Per avere a
disposizione tutti i tuoi modelli eseguilo con script/runner.
Domanda alternativa:
Chi si dovrebbe prendere la pena di eseguire questo motore?
E questo motore è possibile scriverlo con ruby e runnarlo su apache?
Puoi scrivere in ruby uno script che fa “avanzare” lo stato del gioco
di uno scatto. Poi lo invochi ogni 5 minuti. Per avere a
disposizione tutti i tuoi modelli eseguilo con script/runner.
Ma… che voi sappiate, c’e qualche 'demone' un po' piu serio per
questo genere di cose? Cioe, ok, non e difficile crearne uno
semplice, o cacciare qualcosa in cron, ma a me piacerebbe avere una
cosa un po’ piu` seria da usare in questi casi.
Puoi scrivere in ruby uno script che fa “avanzare” lo stato del gioco
di uno scatto. Poi lo invochi ogni 5 minuti. Per avere a
disposizione tutti i tuoi modelli eseguilo con script/runner.
Ingegnoso! Anche se purtroppo mi mancano delle basi. Ora cmq mi
leggo la documentazione di questo script.
Infatti. Qui lo usiamo, ha qualche spigolo (prima di tutto non gira
sotto windows, anzi va patchato altrimenti non fa partire rails solo con
la sua presenza in vendor/plugins) ma fa delle cose abbastanza
interessanti… in particolare, da dentro rails puoi schedulare nuovi
task in backgroundrb, tipo “manda una mail, con calma” e cose del
genere.
Ciao
–
“Intertwingularity is not generally acknowledged,
people keep pretending they can make things deeply
hierarchical, categorizable and sequential when
they can’t. Everything is deeply intertwingled.”
– Ted Nelson