2010-08-12 15 views
10

Ho un server di produzione e un sever di staging in cui vengono testate le nuove funzionalità prima di spostarle in produzione. Il server di staging è fisicamente diverso da quello di produzione (diversi host con URL diversi), ma lo imita il più possibile (vale a dire gli stessi pacchetti, le stesse gemme, ecc.).Rails: differenziazione della fase di produzione dalla produzione

Rails.env = 'production' su entrambi i server.

Il mio problema è che in alcuni casi ho bisogno di un comportamento diverso sulla staging rispetto alla produzione.

Ad esempio, una nuova funzione potrebbe inviare enormi e-mail agli utenti in produzione; ma mentre lo sto testando, preferirei che venissero inviati ad un account email di 'test'.

Qual è il modo migliore per rilevare il server in cui sono?

Mi piacerebbe farlo il più "burrascoso" possibile.

Grazie mille.

risposta

23

In genere, è necessario utilizzare ambienti diversi. In pratica, un ambiente di staging è solitamente molto vicino alla produzione, ma con cose come le email reali disattivate.

Non si è limitati allo sviluppo/test/produzione - è possibile eseguire in un ambiente denominato tutto ciò che si desidera. Basta creare un file config/environments/staging.rb, impostare i valori desiderati e avviare la tua app con RAILS_ENV = staging, tutto qui. In questo modo puoi emulare il tuo ambiente di produzione, ma attivare o disattivare le funzionalità come desiderato quando non vuoi che siano attive prima di andare effettivamente in diretta.

+0

Grazie. Ho finito per cambiare l'ambiente (relativamente facile, in realtà) e ora tutto funziona come previsto. – kikito

-1

Ho paura che questa risposta non sia di grande aiuto.

Il modo railsy è quello di avere ambienti diversi solo nella configurazione (host di risorse, database ecc.) Per ambienti diversi. Quindi un altro database con utenti con indirizzi e-mail fittizi o di prova sarebbe il modo più semplice per farlo.

Se generalmente si sta clonando dalla produzione, si consiglia di aggiornare le e-mail di tutti gli utenti, tramite script/dbconsole oo semplicemente con una semplice attività rake.

E se si desidera limitare/controllare le funzionalità, quindi mi consiglia di farlo attraverso il controllo del codice sorgente, cioè con diverse revisioni implementate.

Problemi correlati