Sinatra / Rails: Persistenza istanze di classe personalizzato durante la vita app
-
01-10-2019 - |
Domanda
Posso assert rotaie / apps Sinatra vengono inizializzati solo una volta e tutte le richieste condividono la stessa app esempio? o fare nuove richieste di spawn nuove istanze app?
E 'possibile classi personalizzate istanze e persistono nel corso della vita di app senza l'utilizzo di sessioni, depositi di database o servizi di terze parti? In caso affermativo, quali sono le implicazioni dal punto di vista filo-sicurezza?
Sto cercando di capire come implementare un web-based download manager e sto valutando quadri rubino-based.
Soluzione
rotaie assert Posso / apps Sinatra sono inizializzato solo una volta e tutte le richieste condividere la stessa istanza app? o fare nuove richieste di spawn nuove istanze app?
Non in generale. Questo dipende molto dalla configurazione. Se si esegue solo su processi con un server (aka rack handler) che riutilizza lo stesso oggetto applicazione, questo funzionerà. Se la stessa istanza dell'applicazione viene utilizzato dipende dal framework web che si sta utilizzando. Sinatra per esempio crea una nuova istanza della classe di applicazione (di solito Sinatra::Application
) per ogni richiesta, se utilizzato come Rack endpoint.
E 'possibile campione personalizzato classi e persistono durante l'app corso della vita senza l'utilizzo di sessioni, depositi di database o di terze parti Servizi? In caso affermativo, quali sono le implicazioni dal thread-sicurezza punto di vista?
Se davvero si vuole persistere classi, probabilmente avrete bisogno di qualcosa di simile a levitazione magnetica. Tuttavia, credo che si intende persistenti istanze di classi personalizzate. Se non si desidera utilizzare un database per la persistenza (si dovrebbe davvero), si potrebbe cadere di nuovo a PStore, fornito con Ruby.