Un lato negativo del push su Heroku è che devo inserire il codice (e il server si riavvia automaticamente) prima di eseguire le mie migrazioni di db.Implementazione a caldo su Heroku senza tempi di inattività
Ciò può ovviamente causare circa 500 errori negli utenti che navigano nel sito Web con il nuovo codice senza le nuove tabelle/attributi: la soluzione proposta da Heroku è quella di utilizzare la modalità di manutenzione, ma voglio un modo senza alcun svantaggio che consenta alla mia webapp correre ogni volta!
C'è un modo? Ad esempio, con Capistrano:
- mi preparo il codice per implementare in una nuova directory
- corro (indietro) migrazioni e il vecchio codice continuerà a funzionare perfettamente
- ho swith esempio bastardino al nuovo dir e riavviare il server
... e non ho tempi di inattività!
Hi Shingara, mi dispiace ma non sono d'accordo con te. Non voglio usare il bilanciamento del carico per questo: una delle grandi caratteristiche di Heroku è la potenza del cloud "trasparente" per necessità e voglio usare questa funzione ... Per bilanciare il carico in Heroku devo mantenere due app diverse e un DB di sola lettura possono causare problemi ai miei utenti. E un sistema senza tempi di inattività non è mai impossibile. Sono abituato al sistema spiegato senza fermi macchina. In caso di un grande cambiamento senza la possibilità di uno schema db retro-compatibile posso usare una pagina di manutenzione: ma questo è il 5% di tutti i miei casi ... – zetarun
Puoi evitare il problema descritto in questa risposta usando CouchDB, per esempio. – iconoclast