2016-01-12 18 views
5

È possibile impostare una variabile di ambiente Heroku senza riavviare l'app?Impostare la variabile di ambiente Heroku senza riavviare l'app

La mia app si collega a diversi servizi online tramite OAuth2. Per ogni servizio a cui mi collego, ho bisogno di impostare un ID OAuth2 e un segreto. Per mantenere queste variabili di configurazione al di fuori del mio codice, sto usando le variabili di ambiente e le sto leggendo su process.env (node.js).

Ogni volta che aggiungo un nuovo servizio alla mia app, devo aggiungere le corrispondenti variabili d'ambiente per l'ID e il segreto. Ho bisogno di fare questo prima di premere il codice più recente, in modo che quando l'app si avvii con la nuova connessione di servizio, l'ID OAuth2 e le variabili segrete siano disponibili.

Attualmente il mio flusso di lavoro è la seguente:

  1. Impostare le variabili di ambiente utilizzando il toolbelt Heroku: heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar
  2. Inserire il codice più recente: git push heroku master

Attualmente, entrambe queste operazioni si riavvierà l'applicazione. Preferirei davvero che la prima operazione non riavvii l'app, in quanto le modifiche a questi parametri di configurazione non hanno bisogno di essere effettive fino al passaggio 2). Riavviando al punto 1) la mia app subirà tempi di fermo non necessari.

Quindi, esiste un modo per impedire al passaggio 1) di riavviare l'app?

+1

Non è possibile modificare le variabili di ambiente per un processo in esecuzione. Puoi solo manipolarlo dall'interno dell'app. Ma se hai bisogno di cambiare una variabile d'ambiente mentre l'app è già in esecuzione, stai comunque facendo qualcosa di sbagliato. – poke

+0

Grazie per il commento, ma se noterete, in realtà sto aggiungendo una variabile di ambiente, non cambiando quella esistente. Quindi non penso che ciò valga come "fare qualcosa di sbagliato"? – fiznool

+0

Si sta impostando un servizio segreto dopo che l'applicazione è già in esecuzione. Un servizio segreto è per me una configurazione che non dovrebbe mai cambiare mentre l'applicazione è in esecuzione. – poke

risposta

3

Secondo this article si afferma piuttosto esplicitamente che

Ogni volta che si imposta o si rimuove un config var, la vostra applicazione sarà riavviato.

Personalmente vorrei anche che ci fosse un modo per fare quello che stai chiedendo. Nelle app più grandi, un riavvio hardware di tutto il sistema può essere difficile quando si eseguono molti tipi di processo. Molte volte ho impostato variabili d'ambiente che non sono cruciali per l'app da afferrare immediatamente, come quella che implica funzionalità future, o impostazioni che hanno OK con il vecchio valore ma si desidera che il nuovo valore abbia effetto in un riavvio a rotazione moda.

Problemi correlati